友盟集成(一) —— UShare模块之快速集成(一)

版本记录

版本号 时间
V1.0 2018.04.03

前言

相信很多人用过友盟,包括友盟的第三方登录、分享以及统计。这里我们就分几个模块进行详细的说明 —— 移动统计(U - App)、网站统计(U - Web)、消息推送(U - Push)、社会化分享(U - Share)、游戏统计(U - Game)、互联网运营数据服务(Dplus) - 多维度、一站式、精细化数据管理服务。

U - Share

U - Share有什么用,其实三方登录和分享都可以利用它来实现。后面我们会给出流程和工程实践。


升级旧版SDK到组件化SDK说明

如果您的APP已经接入过【友盟+】应用统计,Push,分享SDKs,升级过程中的接入方式和接口变动请参考老版SDK升级指南。


导入U-Share

1. 将U-Share SDK添加到工程

友盟集成(一) —— UShare模块之快速集成(一)_第1张图片

2. 添加项目配置

友盟集成(一) —— UShare模块之快速集成(一)_第2张图片

Other Linker Flags加入-ObjC ,注意不要写为-Objc

-ObjC属于链接库必备参数,如果不加此项,会导致库文件无法被正确链接,SDK无法正常运行。

3. 加入依赖系统库

友盟集成(一) —— UShare模块之快速集成(一)_第3张图片

加入以下系统库:

libsqlite3.tbd
CoreGraphics.framework

添加第三方平台库

根据集成的不同平台加入相关的依赖库,未列出平台则不需添加 添加方式:选中项目Target -> General -> Linked Frameworks and Libraries列表中进行添加。

  • 微信(完整版)-精简版无需添加以下依赖库
SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libc++.tbd
libz.tbd
  • QQ(完整版)-精简版无需添加以下依赖库
SystemConfiguration.framework
libc++.tbd 
  • 新浪微博(完整版)-精简版无需添加以下依赖库
SystemConfiguration.framework
CoreTelephony.framework
ImageIO.framework
libsqlite3.tbd
libz.tbd 
  • Twitter
CoreData.framework 

Twitter平台加入后需在Twitter目录右键->Add files to "Twitter"->添加TwitterKit.framework/TwitterKitResources.bundleTwitterShareExtensionUIResources.bundle

  • 短信
MessageUI.framework
  • Pinterest
SafariServices.framework
  • VKontakte
CoreGraphics.framework
Security.framework

第三方平台配置

1. 配置SSO白名单

如果你的应用使用了如SSO授权登录或跳转到第三方分享功能,在iOS9/10下就需要增加一个可跳转的白名单,即LSApplicationQueriesSchemes,否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。 在项目中的info.plist中加入应用白名单,右键info.plist选择source code打开(plist具体设置在Build Setting -> Packaging -> Info.plistFile可获取plist路径) 请根据选择的平台对以下配置进行裁剪:

LSApplicationQueriesSchemes

    
    wechat
    weixin

    
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5

    
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqqopensdkapiV4
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqqbrowser
    mttbrowser    
    tim
    timapi
    timopensdkfriend
    timwpa
    timgamebindinggroup
    timapiwallet
    timOpensdkSSoLogin
    wtlogintim
    timopensdkgrouptribeshare
    timopensdkapiV4
    timgamebindinggroup
    timopensdkdataline
    wtlogintimV1
    timapiV1

    
    alipay
    alipayshare

    
      dingtalk
      dingtalk-open

    
    linkedin
    linkedin-sdk2
    linkedin-sdk

    
    laiwangsso

    
    yixin
    yixinopenapi

    
    instagram

    
    whatsapp

    
    line

    
    fbapi
    fb-messenger-api
    fbauth2
    fbshareextension

      
     
        
    kakaofa63a0b2356e923f3edd6512d531f546
    kakaokompassauth
    storykompassauth
    kakaolink
    kakaotalk-4.5.0
    kakaostory-2.9.0

     
    pinterestsdk.v1

     
    tumblr

   
    evernote
    en
    enx
    evernotecid
    evernotemsg

   
    youdaonote
    ynotedictfav
    com.youdao.note.todayViewNote
    ynotesharesdk

   
    gplus

   
    pocket
    readitlater
    pocket-oauth-v1
    fb131450656879143
    en-readitlater-5776
    com.ideashower.ReadItLaterPro3
    com.ideashower.ReadItLaterPro
    com.ideashower.ReadItLaterProAlpha
    com.ideashower.ReadItLaterProEnterprise

   
    vk
    vk-share
    vkauthorize

   
    twitter
    twitterauth

2. 配置URL Scheme

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

  • 添加URL Types可工程设置面板设置

友盟集成(一) —— UShare模块之快速集成(一)_第4张图片
  • 配置第三方平台URL Scheme 未列出则不需设置。
友盟集成(一) —— UShare模块之快速集成(一)_第5张图片

这里根据在第三方平台,例如微信、QQ以及微博上注册的AppKey等,根据上表进行配置URL Types。

部分平台需要再参考进阶文档
微信平台从U-Share 4/5升级说明
新浪微博集成说明
QQ/QZone平台集成说明
人人平台集成说明
Facebook/Messenger集成说明
Twitter集成说明
Kakao集成说明


初始化设置

1. 初始化U-Share及第三方平台

应用启动后进行U-Share和第三方平台的初始化工作 以下代码将所有平台初始化示例放出,开发者根据平台需要选取相应代码,并替换为所属注册的appKey和appSecret。

注意并不是所有分享平台都需要配置对应的Appkey,比如WhatsApp、印象笔记平台会直接通过AirDrop方式分享,而短信和邮件会直接调用系统自带的应用进行分享,这两种分享方式均不需要配置对应的三方Appkey。

#import 

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

    // UMConfigure 通用设置,请参考SDKs集成做统一初始化。
    // 以下仅列出U-Share初始化部分

    // U-Share 平台设置
    [self configUSharePlatforms];
    [self confitUShareSettings];

    // Custom code

    return YES;
}

- (void)confitUShareSettings
{
    /*
     * 打开图片水印
     */
    //[UMSocialGlobal shareInstance].isUsingWaterMark = YES;

    /*
     * 关闭强制验证https,可允许http图片分享,但需要在info.plist设置安全域名
     NSAppTransportSecurity
     
     NSAllowsArbitraryLoads
     
     
     */
    //[UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;

}

- (void)configUSharePlatforms
{
    /* 设置微信的appKey和appSecret */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"];
    /*
     * 移除相应平台的分享,如微信收藏
     */
    //[[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]];

    /* 设置分享到QQ互联的appID
     * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。
    */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1105821097"/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];

    /* 设置新浪的appKey和appSecret */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954"  appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"https://sns.whalecloud.com/sina2/callback"];

    /* 钉钉的appKey */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_DingDing appKey:@"dingoalmlnohc0wggfedpk" appSecret:nil redirectURL:nil];

    /* 支付宝的appKey */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];


    /* 设置易信的appKey */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_YixinSession appKey:@"yx35664bdff4db42c2b7be1e29390c1a06" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];

    /* 设置点点虫(原来往)的appKey和appSecret */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_LaiWangSession appKey:@"8112117817424282305" appSecret:@"9996ed5039e641658de7b83345fee6c9" redirectURL:@"http://mobile.umeng.com/social"];

    /* 设置领英的appKey和appSecret */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Linkedin appKey:@"81t5eiem37d2sc"  appSecret:@"7dgUXPLH8kA8WHMV" redirectURL:@"https://api.linkedin.com/v1/people"];

    /* 设置Twitter的appKey和appSecret */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Twitter appKey:@"fB5tvRpna1CKK97xZUslbxiet"  appSecret:@"YcbSvseLIwZ4hZg9YmgJPP5uWzd4zr6BpBKGZhf07zzh3oj62K" redirectURL:nil];

    /* 设置Facebook的appKey和UrlString */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Facebook appKey:@"506027402887373"  appSecret:nil redirectURL:@"http://www.umeng.com/social"];

    /* 设置Pinterest的appKey */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Pinterest appKey:@"4864546872699668063"  appSecret:nil redirectURL:nil];

    /* dropbox的appKey */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_DropBox appKey:@"k4pn9gdwygpy4av" appSecret:@"td28zkbyb9p49xu" redirectURL:@"https://mobile.umeng.com/social"];

    /* vk的appkey */
    [[UMSocialManager defaultManager]  setPlaform:UMSocialPlatformType_VKontakte appKey:@"5786123" appSecret:nil redirectURL:nil];

}

2. 设置系统回调

// 支持所有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;
}

注:以上为建议使用的系统openURL回调,且 新浪 平台仅支持以上回调。还有以下两种回调方式,如果开发者选取以下回调,也请补充相应的函数调用。

  • 仅支持iOS9以上系统,iOS8及以下系统不会回调
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
    BOOL result = [[UMSocialManager defaultManager]  handleOpenURL:url options:options];
    if (!result) {
        // 其他如支付等SDK的回调
    }
    return result;
}
  • 支持目前所有iOS系统
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        // 其他如支付等SDK的回调
    }
    return result;
}

若想了解更多U-Share接口,如判断平台安装等,请参考U-Share API说明

后记

本篇主要介绍了U - Share集成的一些初始化配置,感兴趣的给个赞或者关注~~~~

友盟集成(一) —— UShare模块之快速集成(一)_第6张图片

你可能感兴趣的:(友盟集成(一) —— UShare模块之快速集成(一))