iOS 友盟分享

作者: 麦穗0615 | 来源:发表于2019-04-10 13:06 被阅读39次

    前言:
    学习笔记
    大致流程: (只记录 pod集成)

    1.集成SDK
    
       1.1 自动集成 (Pod)  [集成链接](https://developer.umeng.com/docs/66632/detail/67204#h2--sdk4)
    
       1.2  手动集成
          1.2.1  下载对应SDK (分享)
          1.2.2  导入到项目中
          1.2.3  添加项目配置
          1.2.4  加入依赖系统库
    
     2.配置SSO白名单:设置白名单为的是能够获取第三方平台的授权
    
     3.配置URL Scheme: 目的是能够在分享结束后跳回到自己的app中
    
     4.初始化设置
           
     5.调用分享方法
    

    我习惯用Pod集成,感觉很方便。如果需要手动可以参考手动集成文档。也可以参考官方的Pod集成

    一、集成SDK(Pod)

     **依赖库**
    pod 'UMCCommon'
    pod 'UMCSecurityPlugins'
    

    根据需求添加(平台对应的SDK,这里只集成 “微信” 和 “新浪微博”)

    **分享 SDK,根据需要添加平台对应SDK**
    
    # U-Share SDK UI模块(分享面板,建议添加)
    pod 'UMCShare/UI'
    
    # 集成微信(精简版0.2M)
    pod 'UMCShare/Social/ReducedWeChat'
    
    # 集成微信(完整版14.4M)
    pod 'UMCShare/Social/WeChat'
    
    # 集成QQ/QZone/TIM(精简版0.5M)
    pod 'UMCShare/Social/ReducedQQ'
    
    # 集成QQ/QZone/TIM(完整版7.6M)
    pod 'UMCShare/Social/QQ'
    
    # 集成新浪微博(精简版1M)
    pod 'UMCShare/Social/ReducedSina'
    
    # 集成新浪微博(完整版25.3M)
    pod 'UMCShare/Social/Sina'
    
    # 集成Facebook/Messenger
    pod 'UMCShare/Social/Facebook'
    
    # 集成Twitter
    pod 'UMCShare/Social/Twitter'
    
    # 集成支付宝
    pod 'UMCShare/Social/AlipayShare'
    
    # 集成钉钉
    pod 'UMCShare/Social/DingDing'
    
    # 集成豆瓣
    pod 'UMCShare/Social/Douban'
    
    # 集成人人
    pod 'UMCShare/Social/Renren'
    
    # 集成腾讯微博
    pod 'UMCShare/Social/TencentWeibo'
    
    # 集成易信
    pod 'UMCShare/Social/YiXin'
    
    # 集成Flickr
    pod 'UMCShare/Social/Flickr'
    
    # 集成Kakao
    pod 'UMCShare/Social/Kakao'
    
    # 集成Tumblr
    pod 'UMCShare/Social/Tumblr'
    
    # 集成Pinterest
    pod 'UMCShare/Social/Pinterest'
    
    # 集成Instagram
    pod 'UMCShare/Social/Instagram'
    
    # 集成Line
    pod 'UMCShare/Social/Line'
    
    # 集成WhatsApp
    pod 'UMCShare/Social/WhatsApp'
    
    # 集成有道云笔记
    pod 'UMCShare/Social/YouDao'
    
    # 集成印象笔记
    pod 'UMCShare/Social/EverNote'
    
    # 集成Google+
    pod 'UMCShare/Social/GooglePlus'
    
    # 集成Pocket
    pod 'UMCShare/Social/Pocket'
    
    # 集成DropBox
    pod 'UMCShare/Social/DropBox'
    
    # 集成VKontakte
    pod 'UMCShare/Social/VKontakte'
    
    # 集成邮件
     pod 'UMCShare/Social/Email'
    
     # 集成短信
     pod 'UMCShare/Social/SMS'
    

    根据需求添加(平台对应的SDK,这里只集成 “微信” 和 “新浪微博”)

    # U-Share SDK UI模块(分享面板,建议添加)
    pod 'UMCShare/UI'
    # 集成微信(精简版0.2M)
    pod 'UMCShare/Social/ReducedWeChat'
    # 集成新浪微博(精简版1M)
    pod 'UMCShare/Social/ReducedSina'
    

    二、.配置SSO白名单:设置白名单为的是能够获取第三方平台的授权

    1.了解一下

    在iOS9以上系统需要增加一个可跳转App的白名单,即LSApplicationQueriesSchemes
    否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。

    2.具体操作

    在项目中的info.plist中加入应用白名单,右键info.plist选择source code打开(plist具体设置在Build Setting -> Packaging -> Info.plist File可获取plist路径) 请根据选择的平台对以下配置进行缩减:

    <key>LSApplicationQueriesSchemes</key>
     <array>
      <!-- 微信 URL Scheme 白名单-->
       <string>wechat</string>
       <string>weixin</string>
    
    <!-- 新浪微博 URL Scheme 白名单-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>
    
    <!-- QQ、Qzone、TIM URL Scheme 白名单-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqqopensdkapiV4</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqqbrowser</string>
    <string>mttbrowser</string>
    <string>tim</string>
    <string>timapi</string>
    <string>timopensdkfriend</string>
    <string>timwpa</string>
    <string>timgamebindinggroup</string>
    <string>timapiwallet</string>
    <string>timOpensdkSSoLogin</string>
    <string>wtlogintim</string>
    <string>timopensdkgrouptribeshare</string>
    <string>timopensdkapiV4</string>
    <string>timgamebindinggroup</string>
    <string>timopensdkdataline</string>
    <string>wtlogintimV1</string>
    <string>timapiV1</string>
    
    <!-- 支付宝 URL Scheme 白名单-->
    <string>alipay</string>
    <string>alipayshare</string>
    
    <!-- 钉钉 URL Scheme 白名单-->
      <string>dingtalk</string>
      <string>dingtalk-open</string>
    
    <!--Linkedin URL Scheme 白名单-->
    <string>linkedin</string>
    <string>linkedin-sdk2</string>
    <string>linkedin-sdk</string>
    
    <!-- 点点虫 URL Scheme 白名单-->
    <string>laiwangsso</string>
    
    <!-- 易信 URL Scheme 白名单-->
     <string>yixin</string>
     <string>yixinopenapi</string>
    
    <!-- instagram URL Scheme 白名单-->
    <string>instagram</string>
    
    <!-- whatsapp URL Scheme 白名单-->
    <string>whatsapp</string>
    
    <!-- line URL Scheme 白名单-->
    <string>line</string>
    
    <!-- Facebook URL Scheme 白名单-->
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
    
    <!-- Twitter URL Scheme 白名单-->
    <string>twitter</string>
    <string>twitterauth</string>
    
     <!-- Kakao URL Scheme 白名单-->  
     <!-- 注:以下第一个参数需替换为自己的kakao appkey--> 
     <!-- 格式为 kakao + "kakao appkey"-->    
     <string>kakaofa63a0b2356e923f3edd6512d531f546</string>
     <string>kakaokompassauth</string>
     <string>storykompassauth</string>
     <string>kakaolink</string>
     <string>kakaotalk-4.5.0</string>
     <string>kakaostory-2.9.0</string>
    
     <!-- pinterest URL Scheme 白名单-->  
     <string>pinterestsdk.v1</string>
    
    <!-- Tumblr URL Scheme 白名单-->  
      <string>tumblr</string>
    
     <!-- 印象笔记 -->
      <string>evernote</string>
      <string>en</string>
      <string>enx</string>
      <string>evernotecid</string>
      <string>evernotemsg</string>
    
     <!-- 有道云笔记-->
      <string>youdaonote</string>
      <string>ynotedictfav</string>
      <string>com.youdao.note.todayViewNote</string>
      <string>ynotesharesdk</string>
    
     <!-- Google+-->
      <string>gplus</string>
    
     <!-- Pocket-->
      <string>pocket</string>
      <string>readitlater</string>
      <string>pocket-oauth-v1</string>
      <string>fb131450656879143</string>
      <string>en-readitlater-5776</string>
      <string>com.ideashower.ReadItLaterPro3</string>
      <string>com.ideashower.ReadItLaterPro</string>
      <string>com.ideashower.ReadItLaterProAlpha</string>
      <string>com.ideashower.ReadItLaterProEnterprise</string>
    
     <!-- VKontakte-->
      <string>vk</string>
      <string>vk-share</string>
      <string>vkauthorize</string>
    </array>
    

    3.配置URL Scheme: 目的是能够在分享结束后跳回到自己的app中

    URL Scheme是通过系统找到并跳转对应app的设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。




    4.初始化设置

    初始化U-Share及第三方平台
    设置各个分享平台的AppKey,统一调用这个方法,platform为平台名称(注意:QQ平台仅需将appID作为U-Share的appKey参数传进即可)在AppDelegate.m中设置如下代码:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
       [UMConfigure initWithAppkey:UM_APPKEY channel:nil];
     }
    

    . 平台注册

      - (void)configUSharePlatforms
     {
    /* 
     设置微信的appKey和appSecret
     [微信平台从U-Share 4/5升级说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_1
    */
     [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:nil];
    
    
      /* 设置分享到QQ互联的appID
    * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。
    100424468.no permission of union id
      [QQ/QZone平台集成说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_3
      */
      [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1105821097"/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
    
    /* 
    设置新浪的appKey和appSecret
    [新浪微博集成说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_2
    */
      [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954"  appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"https://sns.whalecloud.com/sina2/callback"];
    
    
     .....  其他的APP分享平台类似,不列举........ 
    }
    

    设置系统回调

     // 支持所有iOS系统
     - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
     {
        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
         BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
         if (!result) {
              // 其他如支付等SDK的回调
         }
         return result;
     }
    

    五、分享的消息类型

    分享目前主要支持的类型有:

    • 网页类型(包含 标题+描述+icon 的卡片,点击会进入配置的url)
    • 图片
    • 文本
    • 表情(GIF图片,即Emotion类型,只有微信支持)
    • 图文(包含一张图片和一段文本)
    • 视频(只支持视频URL、缩略图及描述)
    • 音乐(只支持音乐URL、缩略图及描述)
      自定义分享类型,qq和微信不支持图文分享,只能分享图片或者文字其中一种

    分享文本

     - (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);
             }
        }];
     }
    

    2.分享图片

     - (void)shareImageToPlatformType:(UMSocialPlatformType)platformType
    {
     //创建分享消息对象
       UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    
       //创建图片内容对象
       UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
       //如果有缩略图,则设置缩略图
       shareObject.thumbImage = [UIImage imageNamed:@"icon"];
       [shareObject setShareImage:@"https://mobile.umeng.com/images/pic/home/social/img-1.png"];
    
       //分享消息对象设置分享内容对象
       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);
       }
       }];
     }
    

    3.分享图文(新浪支持,微信/QQ仅支持图或文本分享)

     - (void)shareImageAndTextToPlatformType:(UMSocialPlatformType)platformType
    {
     //创建分享消息对象
     UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    
     //设置文本
     messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。";
    
    //创建图片内容对象
     UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
     //如果有缩略图,则设置缩略图
     shareObject.thumbImage = [UIImage imageNamed:@"icon"];
     [shareObject setShareImage:@"https://www.umeng.com/img/index/demo/1104.4b2f7dfe614bea70eea4c6071c72d7f5.jpg"];
    
     //分享消息对象设置分享内容对象
     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);
       }
     }];
     }
    

    4.分享网页

     - (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
     {
         //创建分享消息对象
         UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    
         //创建网页内容对象
         UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];
         //设置网页地址
         shareObject.webpageUrl =@"http://mobile.umeng.com/social";
    
         //分享消息对象设置分享内容对象
         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);
       }
     }];
     }
    

    5.分享音乐

     - (void)shareMusicToPlatformType:(UMSocialPlatformType)platformType
     {
         //创建分享消息对象
         UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
        //创建音乐内容对象
         UMShareMusicObject *shareObject = [UMShareMusicObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];
         //设置音乐网页播放地址
         shareObject.musicUrl = @"http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect";
         //            shareObject.musicDataUrl = @"这里设置音乐数据流地址(如果有的话,而且也要看所分享的平台支不支持)";
         //分享消息对象设置分享内容对象
         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.分享视频

     - (void)shareVedioToPlatformType:(UMSocialPlatformType)platformType
    

    {
    //创建分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //创建视频内容对象
    UMShareVideoObject *shareObject = [UMShareVideoObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];
    //设置视频网页播放地址
    shareObject.videoUrl = @"http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html";
    //            shareObject.videoStreamUrl = @"这里设置视频数据流地址(如果有的话,而且也要看所分享的平台支不支持)";
    
    //分享消息对象设置分享内容对象
    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);
        }
    }];
      }
    
     7  分享微信表情
     8  分享微信小程序
    

    学习参考文章
    1.ios友盟分享初级总结
    2.iOS友盟分享的使用总结
    3.友盟分享(精简版)
    4.iOS - 友盟分享和三方授权(QQ,微博,微信等)6.9.4

    相关文章

      网友评论

        本文标题:iOS 友盟分享

        本文链接:https://www.haomeiwen.com/subject/ybsgiqtx.html