美文网首页
友盟分享总结 coder_hong

友盟分享总结 coder_hong

作者: coder_hong | 来源:发表于2016-06-16 23:52 被阅读372次
    Untitled.gif

    友盟分享

    友盟官网
    集成文档

    • 首先注册友盟账号 SDK下载


      Snip20160616_2.png
    • 友盟个人中心中创建一个应用程序
    Snip20160616_3.png
    • 新建项目 将友盟的库拖入工程中
    Snip20160616_6.png
    • 配置项目环境跟添加需要的第三方库
    Snip20160616_7.png
    • 在 AppDelegate文件内设置你的AppKey:
    #import "UMSocial.h"
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [UMSocialData setAppKey:@"507fcab25270157b37000010"];
    }
    
    
    • 在你的控制器View添加分享按钮 关联Action
    Snip20160616_8.png
    • 在分享的方法里实现代码
    #import "UMSocial.h"
    
        [UMSocialData defaultData].extConfig.title = @"友盟分享测试";
    // 这里设置是点击微信分享的内容进入的URL
        [UMSocialData defaultData].extConfig.wechatSessionData.url = @"http://www.chemayi.com";
        /**
         *  self代表在哪个控制器弹出默认的分享界面
         
         */
        [UMSocialSnsService presentSnsIconSheetView:self // 在哪个控制器的View显示分享
                                             appKey:@"5762b194e0f55a8a740001a5"
                                          shareText:@"人生要有要有梦想"
                                         shareImage:[UIImage imageNamed:@"1"]
                                    shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone, UMShareToEmail,UMShareToQQ, UMShareToFacebook, UMShareToYXSession, UMShareToLWSession, UMShareToAlipaySession, UMShareToDouban]
                                           delegate:nil];
    }
    
    Snip20160616_9.png

    注意: 默认情况下微信跟朋友圈一些分享图标是不会显示出来的
    通常点击弹出对应的分享的icon后,进入时一个webView,也就是需要OAuth2.0授权,需要用户输入账户名跟密码进行授权,但是目前一般App很少直接让用户输入密码跟账号,都是采取SSO授权

    SSO授权
    • 本质还是OAuth2.0 例如我们微信分享,当用户手机上已将安装微信客户端以后,点击微信分享后,自动通过已登录的微信账号进行授权分享

    • SSO授权通常配置的步骤(额外需要添加的步骤)

      • 拿新浪微博举例
    • 解压下载文件夹,将SinaSSO文件夹添加到工程。

    Snip20160616_10.png
    • 在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework

    • 配置URL schemes

      • 在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”
    Snip20160616_11.png
    • 配置微博APPkey
      #import "UMSocialSinaSSOHandler.h"
      //第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。
       [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"
                                                  secret:@"04b48b094faeb16683c32669824ebdad"
                                             RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
    

    注意: 回调URL必须和后台保持一致,否则会返回错误码21322

    • 添加系统回调
    - (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;
    }
    
    • 这样配置以后,我们在点击分享就直接进入新浪客户端

    微信分享

    微信开放平台

    • 注册微信平台账号(需要审核)
    • 管理账号
    Snip20160616_13.png
    • 点击查看
    Snip20160616_14.png
    • 添加相关文件
    Snip20160617_15.png
    • 添加SDK依赖的系统库文件。(如果已经添加过就不需要添加了)
    Snip20160617_16.png
    • 在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理:
      • 以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
      • A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>log.umsns.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
            <key>sns.whalecloud.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
    
            <!-- 集成新浪微博对应的HTTP白名单-->
            <key>sina.cn</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>weibo.cn</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>weibo.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>sinaimg.cn</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>sinajs.cn</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>sina.com.cn</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <!-- 新浪微博-->
    
            <!-- 集成微信、QQ、Qzone、腾讯微博授权对应的HTTP白名单-->
            <key>qq.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <!-- 腾讯授权-->
    
            <!-- 集成人人授权对应的HTTP白名单-->
            <key>renren.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <!-- 人人授权-->
    
            <!-- 集成Facebook授权对应的HTTP白名单-->
            <key>facebook.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>                
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <!-- Facebook授权-->
    
            <!-- 集成Twitter授权对应的HTTP白名单-->
            <key>twitter.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>                
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <!-- Twitter授权-->
        </dict>
    </dict>
    

    注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单。

    • B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
    
    • 应用跳转(SSO等)
      • 如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
      • 同样在info.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 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>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>
    
        <!-- 支付宝 URL Scheme 白名单-->
        <string>alipay</string>
        <string>alipayshare</string>
    
    
        <!-- 人人 URL Scheme 白名单-->
        <string>renrenios</string>
        <string>renrenapi</string>
        <string>renren</string>
        <string>renreniphone</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>
    </array>
    
    

    注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单。

    • 应用瘦身(App Thining)
    iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。
    注:bitcode仅在Xcode7以上显示并默认开启。
    
    Snip20160617_19.png
    • 在你的程序APPdelegate入口方法添加下面的代码
    //设置微信AppId、appSecret,分享url
        [UMSocialWechatHandler setWXAppId:@"wxe030296d5c5968b4" appSecret:@"0cde569ce201db3701b558fd2405ec0b" url:@"http://www.hao123.com"];
        return YES;
    
    • 注意:如果不添加上面的代码,则分享列表中不会出现微信及朋友圈图标
    • URL必须为http链接
    Snip20160617_17.png
    • 配置URL schemes
    Snip20160616_11.png
    • 添加系统回调
      • 在APPdelegate中实现下面两个系统回调方法:
    - (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;
    }
    
    
    • ViewController.m
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
    }
    
    - (IBAction)share:(id)sender {
        
        [UMSocialData defaultData].extConfig.title = @"友盟分享测试";
        [UMSocialData defaultData].extConfig.wechatSessionData.url = @"http://www.chemayi.com";
        /**
         *  self代表在哪个控制器弹出默认的分享界面
         
         */
        [UMSocialSnsService presentSnsIconSheetView:self // 在哪个控制器的View显示分享
                                             appKey:@"5762b194e0f55a8a740001a5"
                                          shareText:@"人生要有要有梦想"
                                         shareImage:[UIImage imageNamed:@"1"]
                                    shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone, UMShareToEmail,UMShareToQQ, UMShareToFacebook, UMShareToYXSession, UMShareToLWSession, UMShareToAlipaySession, UMShareToDouban]
                                           delegate:nil];
    }
    
    @end
    
    Untitled.gif

    相关文章

      网友评论

          本文标题:友盟分享总结 coder_hong

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