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”)
添加项目配置
在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设置如下:
添加第三方平台依赖库
根据您集成的不同平台,需要加入相关的平台依赖库,未列出平台则不需添加添加方式:选中项目Target -> General -> Linked Frameworks and Libraries列表中进行添加
微信(完整版)
SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libc++.tbd
libz.tbdQQ(完整版)
精简版无需添加以下依赖库
SystemConfiguration.framework
libc++.tbd新浪微博(完整版)
SystemConfiguration.framework
CoreTelephony.framework
ImageIO.framework
libsqlite3.tbd
libz.tbd
Photos.frameworkSwift集成
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的宏
注意事项如下:
UMSocialDemo-Swift.h 是工程自动为OC调用swift生成的,如果在新建的工程中应该是 $(TARGET_NAME)-Swift.h ,$(TARGET_NAME)为你的工程默认配置的名字
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"];
}微信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;
}设置Universal Links系统回调
微信和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 前提前发现问题和调试问题,通过控制台会提供尽可能丰富的集成信息供开发者参考。
接入调试日志库
接入日志库参考 组件化日志查看
初始化并设置日志库
请参考 日志库初始化设置
如果还想使用微信支付功能,请参考此文档