友盟分享总结 coder_hong

友盟分享总结 coder_hong_第1张图片
Untitled.gif

友盟分享

友盟官网
集成文档

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


    友盟分享总结 coder_hong_第2张图片
    Snip20160616_2.png
  • 友盟个人中心中创建一个应用程序
友盟分享总结 coder_hong_第3张图片
Snip20160616_3.png
  • 新建项目 将友盟的库拖入工程中
友盟分享总结 coder_hong_第4张图片
友盟分享总结 coder_hong_第5张图片
Snip20160616_6.png
  • 配置项目环境跟添加需要的第三方库
友盟分享总结 coder_hong_第6张图片
Snip20160616_7.png
  • 在 AppDelegate文件内设置你的AppKey:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UMSocialData setAppKey:@"507fcab25270157b37000010"];
}

  • 在你的控制器View添加分享按钮 关联Action
友盟分享总结 coder_hong_第7张图片
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];
}
友盟分享总结 coder_hong_第8张图片
Snip20160616_9.png

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

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

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

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

友盟分享总结 coder_hong_第9张图片
Snip20160616_10.png
  • 在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework

  • 配置URL schemes

    • 在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”
友盟分享总结 coder_hong_第10张图片
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;
}
  • 这样配置以后,我们在点击分享就直接进入新浪客户端

微信分享

微信开放平台

  • 注册微信平台账号(需要审核)
  • 管理账号
友盟分享总结 coder_hong_第11张图片
Snip20160616_13.png
  • 点击查看
友盟分享总结 coder_hong_第12张图片
Snip20160616_14.png
  • 添加相关文件
友盟分享总结 coder_hong_第13张图片
Snip20160617_15.png
  • 添加SDK依赖的系统库文件。(如果已经添加过就不需要添加了)
友盟分享总结 coder_hong_第14张图片
Snip20160617_16.png
  • 在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理:
    • 以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
    • A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
NSAppTransportSecurity

    NSExceptionDomains
    
        log.umsns.com
        
            NSIncludesSubdomains
            
            NSTemporaryExceptionAllowsInsecureHTTPLoads
            
            NSTemporaryExceptionMinimumTLSVersion
            TLSv1.1
        
        sns.whalecloud.com
        
            NSIncludesSubdomains
            
            NSTemporaryExceptionAllowsInsecureHTTPLoads
            
            NSTemporaryExceptionMinimumTLSVersion
            TLSv1.1
        

        
        sina.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        weibo.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        weibo.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sinaimg.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sinajs.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sina.com.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        qq.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        renren.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        facebook.com
        
            NSIncludesSubdomains
                            
            NSExceptionRequiresForwardSecrecy
            
        
        fbcdn.net
        
            NSIncludesSubdomains
            
            NSExceptionRequiresForwardSecrecy
            
        
        akamaihd.net
        
            NSIncludesSubdomains
            
            NSExceptionRequiresForwardSecrecy
            
        
        

        
        twitter.com
        
            NSIncludesSubdomains
                            
            NSExceptionRequiresForwardSecrecy
            
        
        
    

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

  • B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求
NSAppTransportSecurity

    NSAllowsArbitraryLoads
    


  • 应用跳转(SSO等)
    • 如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
    • 同样在info.plist增加:
LSApplicationQueriesSchemes

    
    wechat
    weixin

    
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5

    
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqqbrowser
    mttbrowser

    
    alipay
    alipayshare


    
    renrenios
    renrenapi
    renren
    renreniphone

    
    laiwangsso

    
    yixin
    yixinopenapi

    
    instagram

    
    whatsapp

    
    line

    
    fbapi
    fb-messenger-api
    fbauth2
    fbshareextension


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

  • 应用瘦身(App Thining)
iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。
注:bitcode仅在Xcode7以上显示并默认开启。
友盟分享总结 coder_hong_第15张图片
Snip20160617_19.png
  • 在你的程序APPdelegate入口方法添加下面的代码
//设置微信AppId、appSecret,分享url
    [UMSocialWechatHandler setWXAppId:@"wxe030296d5c5968b4" appSecret:@"0cde569ce201db3701b558fd2405ec0b" url:@"http://www.hao123.com"];
    return YES;
  • 注意:如果不添加上面的代码,则分享列表中不会出现微信及朋友圈图标
  • URL必须为http链接
友盟分享总结 coder_hong_第16张图片
Snip20160617_17.png
  • 配置URL schemes
友盟分享总结 coder_hong_第17张图片
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
友盟分享总结 coder_hong_第18张图片
Untitled.gif

你可能感兴趣的:(友盟分享总结 coder_hong)