友盟分享

未安装微信客户端

友盟U-Share 从6.0开始全面重构了社会化分享SDK,变化非常大。重构后的分享用起来舒服很多。为了便于维护旧项目同时尝试新东西,我都码在这做对比学习。(前半部分为以前5.0的内容,后半部分为6.0后的内容)

  • 第三帐号申请与绑定
    申请第三方帐号,审核通过后与友盟后台绑定。
    目前新浪微博,QQ空间需要在后台绑定,
    而微信 和 QQ 则直接在代码中设置
新浪微博安全域名:sns.whalecloud.com

新浪微博回调页:http://sns.whalecloud.com/sina2/callback

后台绑定
  • CocoaPods 导入
    pod 'UMengSocialCOM', '~> 5.2.1'

  • 添加SDK依赖的八个系统库文件
    Security.framework
    libiconv.dylib
    SystemConfiguration.framework
    CoreGraphics.Framework
    libsqlite3.dylib
    CoreTelephony.framework
    libstdc++.dylib
    libz.dylib

  1. 配置URL Scheme


    微信微博URL Scheme

5.0分享

//appDelegate.m 可以写成类目
-(BOOL)application:(UIApplication * )application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //设置友盟appKey
    [UMSocialData setAppKey:UMENG_APP_KEY];
    //设置新浪微博 #import "UMSocialSinaSSOHandler.h"
    //打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:WEIBO_APP_KEY
                                              secret:WEIBO_APP_KEY_SECRET
                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
   // 微信设置
    [UMSocialWechatHandler setWXAppId:WEIXIN_APP_KEY
                            appSecret:WEIXIN_APP_KEY_SECRET
                                  url:@"http://www.umeng.com/social"];
    // 微信是否安装
    //[WXApi isWXAppInstalled];
    //隐藏微信未安装则不显示,微博是否安装都显示
    //[UMSocialConfig hiddenNotInstallPlatforms:@[UMShareToWechatSession, UMShareToWechatTimeline]];
}
//系统回调方法
//注意如果同时使用微信支付、支付宝等其他需要改写回调代理的SDK,
//请在if分支下做区分,否则会影响 分享、登录的回调
-(BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    if (result == FALSE) {
        
        //调用其他SDK,例如支付宝SDK等
    }
    return result;
}
-(void)shareAction:(UIButton*)sender{    

    //点击分享内容后跳转的 URL
    [UMSocialData defaultData].extConfig.wechatSessionData.url = @"http://baidu.com";
    [UMSocialData defaultData].extConfig.wechatTimelineData.url = @"http://baidu.com";
    //分享内容标题
    [UMSocialData defaultData].extConfig.wechatSessionData.title = @"微信好友title";
    [UMSocialData defaultData].extConfig.wechatTimelineData.title = @"微信朋友圈title";
    
    //微博上视频音频分享不成功,可能是因为帐号没通过审核

    //分享图片资源(url和UIImage同时存在时,前者有效)。
    [[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"];
    //分享音乐资源
    //[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeMusic url:@"http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3"];
    //分享视频资源
    //[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeVideo url:@"http://v.youku.com/v_show/id_XNjQ1NjczNzEy.html?f=21207816&ev=2"];
    
    [UMSocialSnsService presentSnsIconSheetView:self
                                         appKey: UMENG_APP_KEY
                                      shareText:@"这是篇测试微博http://fanghoo.cn" //分享的文字
                                     shareImage:[UIImage imageNamed:@"0"]       //分享的图片
                                shareToSnsNames:@[UMShareToSina,            //新浪微博
                                                  UMShareToWechatSession,   //微信好友
                                                  UMShareToWechatTimeline,  //微信朋友圈
                                                  UMShareToSms]             //短信
                                       delegate:self];
    }
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
    //根据responseCode得到发送结果,如果分享成功
    if(response.responseCode == UMSResponseCodeSuccess)
    {
        //得到分享到的平台名
        NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
    }
}

5.0登陆

第三方登陆主要用于简化用户登陆流程,获得第三方授权后(微博是后台绑定,默认授权,但微信授权需认证的开发者),即可获取第三方平台用户资料。
第三方登陆所需要的相关库文件,第三方AppID及相关配与分享完全一致,无需要额外配置

//微博登陆

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

        //微博用户名、uid、token等
            if (response.responseCode == UMSResponseCodeSuccess) {
               UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.UMShareToSina];
                NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);

            }});

//微信登陆 

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

        //获取微信用户名、uid、token等
            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.UMShareToWechatSession];
                NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);

            }});

===========多彩分割线=============

6.0分享

6.0实测最好不要用cocoapods,还是手动集成最好。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //设置友盟 appKey
    [[UMSocialManager defaultManager] setUmSocialAppkey:UMENG_APP_KEY];
    
    //设置微信 appKey 和 appSecret
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession
                                          appKey:WECHATAPP_KEY
                                       appSecret:WECHATAPP_SECRET
                                     redirectURL:nil];
    return YES;
}

//设置系统回调
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        
    }
    
    return result;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        
    }
    return result;
    
}
//分享
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    __weak typeof(self) weakSelf = self;
    //显示分享面板
    [UMSocialUIManager showShareMenuViewInView:nil sharePlatformSelectionBlock:^(UMSocialShareSelectionView *shareSelectionView, NSIndexPath *indexPath, UMSocialPlatformType platformType) {
        [UMSocialUIManager dismissShareMenuView];
        [weakSelf shareTextToPlatformType:platformType];
        
    }];

}


- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
/*
    //创建分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    //设置文本
    messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。";
    
    //调用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
*/
    
    //创建分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    //创建分享基本类型 UMShareObject 是所有多媒体类型的基类
    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"房狐" descr:@"我这只是一个测试,没嘛意思" thumImage:@"wx"];
    shareObject.webpageUrl = @"www.baidu.com";
    messageObject.shareObject = shareObject;
    
    //调用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            NSLog(@"************Share fail with error %@*********",error);
        }else{
            NSLog(@"response data is %@",data);
        }
    }];
    
}

6.0登陆

//获取用户信息
- (void)getUserInfoForPlatform:(UMSocialPlatformType)platformType
{
    [[UMSocialManager defaultManager] getUserInfoWithPlatform:platformType currentViewController:nil completion:^(id result, NSError *error) {
        if (error) {
            return ;
        }
        UMSocialUserInfoResponse *userinfo =result;
        NSString *message = [NSString stringWithFormat:@"name: %@\n icon: %@\n gender: %@\n",userinfo.name,userinfo.iconurl,userinfo.gender];
        NSLog(@"%@",message);
    }];
}
//获取授权
-(void)authWithPlatform:(UMSocialPlatformType)platformType
{
    [[UMSocialManager defaultManager]  authWithPlatform:platformType currentViewController:self completion:^(id result, NSError *error) {
     
        UMSocialAuthResponse *authresponse = result;
        NSString *authMessage = [NSString stringWithFormat:@"result: %d\n uid: %@\n accessToken: %@\n",(int)error.code,authresponse.uid,authresponse.accessToken];
        NSLog(@"%@",authMessage);
        
        UMSocialResponse *response = result;
        NSString *responseMessage = [NSString stringWithFormat:@"result:%d\n uid: %@\n openID:%@\n",(int)error.code,response.uid,response.openid];
        NSLog(@"%@",responseMessage);
        
    }];
}
//UMSocialUserInfoResponse 和 UMSoialAuthResponse 都是UMSocialResponse 的子类。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容