跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

iOS端接入集成

以下是集成iOS的U-Share SDK过程:

获取appkey

集成友盟+ U-Share SDK之前,您首先需要到 【友盟+】后台注册一个新应用,获得Appkey。如果已经注册过应用这步可以忽略

集成视频

开发者可关注友盟学院出品《U-Share iOS集成指南》教程,手把手教您快速集成

如遇到集成问题可以用新版iOS U-Share Demo 测试

Objective-C集成

自动集成(Cocoapods)

集成基础组件库

社会化分享U-Share SDK需要配合7.x.x版本基础组件库(含统计功能)等才能正常使用。如果想要用Cocoapods方式集成U-Share SDK,首先请先集成以下依赖库:

    pod 'UMCommon'    //必须集成,由原来的UMCCommon变为了UMCommon
    pod 'UMDevice'       //必须集成
    pod 'UMLink'        //可选集成,对应了智能超链产品U-Link,如想统计分享回流人数、分享新增用户指标则必选
重要

旧版UMCCommon里包含了UMCommon、UMDevice和UMAPM,新版进行了拆分。集成分享各组件也从旧版的UMCShare/xx变成了UMShare/xx,这里请注意不要弄混了否则集成时会报错

依赖库更多信息可以查看移动统计SDK集成文档中的Cocoapods集成一节

集成U-Share SDK

您可以根据需要添加想要的社交平台对应SDK。因后续各平台精简版不再更新,因此建议您集成完整版SDK

# U-Share SDK UI模块(分享面板,建议添加)
    pod 'UMShare/UI'               //由原来的UMCShare/UI变为了UMShare/UI

#集成微信
    pod 'UMShare/Social/WeChat'

#集成QQ/QZone/TIM
    pod 'UMShare/Social/QQ'

#集成新浪微博(完整版25.3M)
    pod 'UMShare/Social/Sina'

#集成新浪微博(精简版1M)
    pod 'UMShare/Social/ReducedSina'

#集成钉钉
    pod 'UMShare/Social/DingDing'

#集成企业微信
    pod 'UMShare/Social/WeChatWork'

#集成抖音
    pod 'UMShare/Social/DouYin'

#集成支付宝
    pod 'UMShare/Social/AlipayShare'

#集成邮件
    pod 'UMShare/Social/Email'

#集成短信
    pod 'UMShare/Social/SMS'

#集成Facebook/Messenger
    pod 'UMShare/Social/Facebook'

#集成Twitter
    pod 'UMShare/Social/Twitter'

#集成Kakao
    pod 'UMShare/Social/Kakao'

#集成Instagram
    pod 'UMShare/Social/Instagram'

#集成WhatsApp
    pod 'UMShare/Social/WhatsApp'
说明

1.可在项目中加入 “基础库-日志库” 中的 UMCommonLog 进行开发调试。

2.如同时想使用微信分享和微信支付功能,请使用手动集成方式,具体参考此文档

Pod集成示例:如同时集成友盟统计、分享、智能超链SDK,通过配置以下 Podfile 代码:

target 'UMPlusDemo'do
    pod 'UMCommon'
    pod 'UMDevice' 
    pod 'UMShare/UI'
    pod 'UMShare/Social/WeChat'
    pod 'UMShare/Social/QQ'
    pod 'UMLink'  
end

配置完成后在 Podfile 所在目录执行

pod update

即可。不建议加入--no-repo-update 参数,若添加后仅从本地Cocoapods库中查找SDK,不再更新线上SDK。如果本地存在SDK会直接使用本地SDK版本(不是线上最新版本),若本地不存在SDK会产生错误。 也不建议使用 pod install 命令,此命令不会更新最新版本SDK。由于 pod search 命令对新增项目可能出现无法找到的情况,建议直接使用 pod update 进行直接更新。

自动集成完U-Share SDK后请直接跳转到第三方平台配置一节

手动集成

社会化分享U-Share SDK需要配合7.x.x版本基础组件库(含统计功能)才能正常使用。所以需要同时集成基础组件库和分享SDK

获取SDK

  • 首先在压缩包中解压分享iOS SDK(此SDK只包含微信、微博和QQ三个平台)XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)1

添加项目配置

在Other Linker Flags加入-ObjC ,

注意不要写为-Objc

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

加入依赖系统库

加入以下系统库:

CoreTelephony.framework    获取运营商标识

    libz.tbd  数据压缩

    libsqlite.tbd  数据缓存

//libc++.tbd  如果集成应用性能监控SDK(U-APM),请添加该依赖库
WebKit.framework
SystemConfiguration.framework  判断网络状态

在项目设置target -> 选项卡General ->Linked Frameworks and Libraries设置如下:2

添加第三方平台依赖库

根据您集成的不同平台,需要加入相关的平台依赖库,未列出平台则不需添加添加方式:选中项目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 
Photos.framework

Swift集成

Swift调用Objective-C需要建立一个桥接头文件进行交互。

新建桥接头文件

设置Objective-C桥接文件

导入SDK头文件

在新建的桥接文件header.h中加入U-Share SDK头文件:

// U-Share核心SDK
#import <UMShare/UMShare.h>

// U-Share分享面板SDK,未添加分享面板SDK可将此行去掉
#import <UShareUI/UShareUI.h>

UMSocialDemo的OC和Swift的切换

UMSocialDemo是用OC的代码编写的,同时也兼容了swift3.0的调用示例(UMSocialDemo不再对swift2.0做示例兼容).

Swift文件夹的结构UMSocialSDK-Bridging-Header.h 为swift3.0的桥接文件,主要是在swift3.0中,调用oc的代码。UMSocialSwiftInterface.swift 为Swift3.0的接口文件,主要是为了展示用户让oc调用swift3.0的代码的示例(用户可以在swift3.0的工程中直接调用对应的swift接口)。

设置切换Swift的宏

注意事项如下:

  1. UMSocialDemo-Swift.h 是工程自动为OC调用swift生成的,如果在新建的工程中应该是 $(TARGET_NAME)-Swift.h ,$(TARGET_NAME)为你的工程默认配置的名字

  2. UMSocialDemo需要xcode8下打开,因为里面引入了swift3.0的文件,不然会编译出错(如果不需要swift3.0,直接运行OC的代码,可以去掉对应宏 UM_Swift 和工程里面对应的 文件夹Swift 即可编译通过)。

第三方平台配置

大部分社交平台进行分享、登录操作需要在第三方平台创建应用并提交审核,创建应用后,分享、登录操作时显示的应用icon、名称和对应开放平台设置有关,必须要创建应用的平台为:微信、QQ、新浪、钉钉、企业微信、支付宝、Facebook、Kakao、LinkeIn、Twitter。

各个平台详细的注册,请参考链接:第三方平台注册方式

配置SSO白名单

如果你的应用使用了如SSO授权登录或跳转到第三方分享功能,在iOS9/10下就需要增加一个可跳转的白名单,即LSApplicationQueriesSchemes,否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。

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

重要

iOS 15限制了配置的URL Scheme不可以超过50个

<key>LSApplicationQueriesSchemes</key>
<array>
<!--微信 URL Scheme白名单-->
<string>wechat</string>
<string>weixin</string>
<string>weixinULAPI</string>
<string>weixinURLParamsAPI</string>


<!-- QQ、Qzone URL Scheme白名单-->
<string>mqqopensdklaunchminiapp</string>
<string>mqqopensdkminiapp</string>
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqqopensdkapiV4</string>
<string>mqqopensdknopasteboard</string>
<string>mqqopensdknopasteboardios16</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>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>weibosdk3.3</string>


说明

注意:若Sdk接入版本大于等于6.10.6,请注意增加微信weixinURLParamsAPI配置及新浪配置weibosdk3.3。若Sdk接入版本大于等于6.10.7,请注意增加QQ配置mqqopensdknopasteboardmqqopensdknopasteboardios16

配置URL Scheme

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

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

  • 配置第三方平台URL Scheme未列出则不需设置

格式

举例

备注

微信appKey

wxdc1e388c3822c80b

需要添加两项URL Scheme: 1、”tencent”+腾讯QQ互联应用appID 2、“QQ”+腾讯QQ互联应用appID转换成十六进制(不足8位前面补0)

如appID:100424468 1、tencent100424468 2、QQ05fc5b14

QQ05fc5b14为100424468转十六进制而来,因不足8位向前补0,然后加”QQ”前缀

“wb”+新浪appKey

wb3921700954

权限配置

以下是集成部分平台时需要进行的一些权限配置,未列出的平台暂不需要配置

微博

从微博SDk 3.2.1,即U-Share 6.9.1版开始,支持微博分享多张图片。需在 info.plist 文件中配置相册权限

<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>

详细说明请参考 微博分享多图说明。

初始化设置

初始化基础组件库

以下是集成组件库初始化工作:请将此处的appkey填写成后台应用的appkey

/** 初始化友盟所有组件产品
 @param appKey 开发者在友盟官网申请的appkey.
 @param channel 渠道标识,可设置nil表示"App Store".
 */
+(void)initWithAppkey:(NSString*)appKey channel:(NSString*)channel;

参数:

参数

类型

描述

备注

appKey

NSString

在 App Analytics 创建应用后,进入数据报表页中, 在“统计分析->设置->应用信息” 页面查看。

AppKey为必需,为了根据您的AppKey查看后台的实时和离线统计数据,帮助您了解目前您的产品的详细情况。

channel

NSString

channel为您应用的推广渠道。channel为nil或@””时,默认会被当作@”App Store”渠道

渠道命名规范:可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。 首尾字符不可以为空格 最多256个字符 “App Store” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名。

示例代码:

#import <UMCommon/UMCommon.h>

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[UMConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];
}

更多初始化信息可以参考移动统计文档

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

以下是U-Share初始化工作:

#import<UMShare/UMShare.h>

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

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

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

// Custom code

return YES;
}

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

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

以下是第三方平台初始化工作,我们将所有平台初始化示例放出,开发者可根据平台需要选取相应代码,并替换为所属注册的appKey和appSecret。

集成完整版的微信、QQ和微博必须要配置Universal link,从 v6.10.3 分享SDK及以后,微博也一定要配置Universal link

重要

QQ官方从V3.5.7SDK开始推出了个人隐私改造,QQ开发者需通过接口通知QQ SDK,用户是否已进行隐私协议授权,U-ShareSDK为了保证QQV3.5.7功能正常,在初始化QQ的appid的时候,默认调用了隐私协议授权函数,如果客户需要明确隐私授权,可以延迟初始化QQ平台的初始化函数。

// 微信、QQ、微博完整版会校验合法的universalLink,不设置会在初始化平台失败 
   //配置微信Universal Link需注意 universalLinkDic的key是rawInt类型,不是枚举类型 ,即为 UMSocialPlatformType.wechatSession.rawInt
[UMSocialGlobal shareInstance].universalLinkDic =@{@(UMSocialPlatformType_WechatSession):@"https://umplus-sdk-download.oss-cn-shanghai.aliyuncs.com/",
@(UMSocialPlatformType_QQ):@"https://umplus-sdk-download.oss-cn-shanghai.aliyuncs.com/qq_conn/101830139",
 @(UMSocialPlatformType_Sina):@"https://umplus-sdk-download.oss-cn-shanghai.aliyuncs.com/"};

//extraInitDic,企业微信增加了corpid和agentid,故在UMSocialGlobal的全局配置里面增加extraInitDic来存储额外的初始化参数。extraInitDic的key:corpId和agentId为固定值
[UMSocialGlobal shareInstance].extraInitDic =@{
@(UMSocialPlatformType_WechatWork):@{@"corpId":@"wwac6ffb259ff6f66a",@"agentId":@"1000002"}
};


}

-(void)configUSharePlatforms
{
/* 设置微信的appKey和appSecret */
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"];
/*设置小程序回调app的回调*/
[[UMSocialManager defaultManager] setLauchFromPlatform:(UMSocialPlatformType_WechatSession) completion:^(id userInfoResponse,NSError*error){
NSLog(@"setLauchFromPlatform:userInfoResponse:%@",userInfoResponse);
}];
/*
     * 移除相应平台的分享,如微信收藏
     */
//[[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"];

}

说明

若您分享到微信/QQ有“未验证应用“或者是"正在连接"的现象,那么首先请您集成微信和QQ的完整版,其次参考上述代码正确配置微信和QQ的Universal link。请看FAQ:微信平台 QQ平台

说明

微信universalLinkDic的key是rawInt类型,不是枚举类型,即为 UMSocialPlatformType.wechatSession.rawInt

设置系统回调

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

注:此方法在swift4.1(Xcode 9.3)已废弃,Objective-C项目不影响。 新浪平台外的其他平台可在swift项目中使用下面两种回调方法。

仅支持iOS9以上系统

iOS8及以下系统不会回调

-(BOOL)application:(UIApplication*)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)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;
}

微信和QQ完整版都需要开发者配置正确的Universal link和对应的Universal link系统回调,详情可以看文档

-(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray* __nullable restorableObjects))restorationHandler
{
if(![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]){
// 其他SDK的回调
}
return YES;
}

用户可以自行捕获Universal Links系统回调

注:这里的回调是指分享模块的回调,和智能超链U-Link也有系统回调,那个是Deeplink唤醒的回调,二者回调是互相独立的。假如您同时需要分享功能和deeplink唤起功能,那么二者都需要设置

调试模式与日志

日志库用于协助开发者在集成及开发阶段,发布 App 前提前发现问题和调试问题,通过控制台会提供尽可能丰富的集成信息供开发者参考。

接入调试日志库

接入日志库参考 组件化日志查看

初始化并设置日志库

请参考 日志库初始化设置

说明

如果还想使用微信支付功能,请参考此文档