接入集成
如果您希望将H5页面从app分享到微信等平台,实现从app——>微信——>app的分享场闭环链路,可以集成U-Share的SDK集成,即可拥有社交分享加授权登录能力
U-Link整体接入流程
如果您想要拥有Deeplink功能,需要按照以下的步骤接入U-Link:
如果您希望将H5页面从app分享到微信等平台,实现从app——>微信——>app的分享场闭环链路,可以集成U-Share的SDK集成,即可拥有社交分享加授权登录能力,集成文档参考:U-Share iOS接入指南
一、配置U-Link参数
在使用U-Link之前,需要先配置一些参数才能正确使用,首先请参考Deeplink设置页使用文档,在U-Link后台【设置-Deeplink设置】配置Deeplink相关参数,这些参数包括Scheme,默认下载地址,Universal link等等,并且绑定关联应用(如果只有单端应用则选暂无)
其次参考裂变营销页文档,在U-Link后台【分析-裂变营销】页面创建裂变营销活动,填写此裂变活动要跳转安装传递的参数和投放渠道等,创建完裂变活动后,在活动详情页可以找到服务端生成的与此裂变活动一一对应的LinkID
二、H5页面集成 JS SDK
一个裂变活动需要准备一个H5页面,请提前准备从客户端分享出来(或者是通过短信/广告投放出去)的H5页面,并且将我们提供的JS SDK集成到该H5页面中。请参考文档JSSDK接入指南,并用服务端生成的LinkID初始化JSSDK,这样H5页面才能正常唤起App
三、集成U-Link SDK
开发者要在自己的App客户端里集成新版U-Link SDK,建议一起集成U-Share SDK实现分享能力。集成一共有手动和自动两种方式
1.获取SDK
1.1 自动集成
智能超链U-Link SDK需要配合7.x.x版本基础组件库(含统计功能)等才能正常使用。
pod 'UMCommon' //必须集成,依赖库
pod 'UMDevice' //必须集成,依赖库
pod 'UMLink' //必须集成,对应了智能超链产品U-Link
pod 'UMShare/Social/WeChat' //可选集成,对应了社会化分享产品U-Share,一起集成能统计分享回流指标
依赖库更多信息可以查看移动统计SDK集成文档中的Cocoapods集成一节
配置完成后在 Podfile 所在目录执行
pod update即可。不建议加入--no-repo-update 参数,若添加后仅从本地Cocoapods库中查找SDK,不再更新线上SDK。如果本地存在SDK会直接使用本地SDK版本(不是线上最新版本),若本地不存在SDK会产生错误。 也不建议使用 pod install 命令,此命令不会更新最新版本SDK。由于 pod search 命令对新增项目可能出现无法找到的情况,建议直接使用 pod update 进行直接更新。
自动集成完U-Link SDK后请直接跳转到在App里处理配置参数一节
1.2 手动集成 SDK
请在友盟+官网下载U-Link最新Link SDK

下载完成后,解压将会拿到相关的common包以及link包。要求common包版本在7.2.3版本及以上

2 集成 SDK
当您下载了U-Link SDK后,就可以开始集成了。common包的手动集成文档请参考官网的U-App集成文档
如您一起下载了U-Share SDK,请参考官网U-Share iOS接入指南,集成后需要再对App工程进行U-Link相关功能的处理
3 初始化 SDK
您需要初始化U-Link SDK,请参考通用初始化接口
四、在App里处理配置参数
之前开发者已经在ULink后台页面配置了跳转页面path和kv参数后,但是还要在自己App里进行配置,使得App能够解析这些参数并且能够跳转到相应的页面。
开发者可以查看U-Link SDK Demo: https://github.com/umeng/Link_Demo_iOS
处理主要分为两部分:1、新安装App参数获取 2、唤醒已安装App的系统回调,详情见下面内容
1、 处理前准备
(1)集成UMCommon.framework
请看上面第三章节,确保已经集成了UMCommon.framework,
(2)Universal link/URL Scheme配置
iOS端建议用Universal link方式拉起App,因为微信和QQ都支持Universal link方式,并且此方式不需要让用户点击确认框,用户体验会更好。Universal link配置方式请看第五章,也可以在U-Link后台由友盟免费生成
也可以采取URL Scheme方式拉起App(微信QQ有可能会封锁此方式),具体配置方式参考文档
(3)头文件MobClickLink.h为deeplink的头文件
在UMCommon.framework里可以找到MobClickLink.h头文件

2、 新安装参数获取
用户首次安装App,打开App时需要调取如下接口(非首次安装不用调用),调取此接口后服务端会进行模糊匹配,模糊匹配成功后App就可以获取到新安装参数 。
1.此接口必须要等到用户同意隐私政策之后再延迟1~2秒调取,目的是排除因网络延迟问题,造成模糊匹配失败
2.U-Link v1.2.0 SDK及以后,支持跨端打通模糊匹配技术,突破传统IP和剪切板模糊匹配的缺点,提升成功获取新安装参数的概率。跨端打通模糊匹配技术说明
3.U-Link v1.1.0 SDK及以后,支持剪切板模糊匹配技术,以提高成功获取新安装参数的概率,涉及到剪切板读和写功能。但是iOS 14以上系统读取剪切板时,会弹出一个提示框“xx粘贴自xx”。如希望使用剪切板功能,请仔细阅读剪切板使用说明文档,如不希望使用剪切板功能,则调取下方新版接口,将enablePasteboard设置为no即可,U-Link SDK就不会读取用户剪切板,此时会通过IP或者跨端打通技术进行模糊匹配
//初始化appkey
//....TODO
//新安装参数获取,新旧版接口任选其一即可
//新版接口,将enablePasteboard设置为no,则不会读剪切板;设置为yes会读剪切板
+ (void)getInstallParams:(void (^)(NSDictionary *params, NSURL *URL, NSError *error))completion enablePasteboard:(BOOL)enablePasteboard;
//旧版接口,默认开启剪切板读取功能
[MobClickLink getInstallParams:^(NSDictionary*params, NSURL *URL,NSError*error)
{
if(error){
NSLog(@"getInstallParams====");
return;
}
NSLog(@"getInstallParams URL:(%@)",URL);
NSLog(@"getInstallParams params:(%@)",params);
}];
return YES;
调取此接口,如果模糊匹配成功,您能够获取到Params和URL两个参数,
Params:您在U-Link后台裂变营销页创建活动时填写的固定【首次安装传参】参数,此参数不是动态的

URL:服务端拼接的wakeupurl,如果是Universal link拉起方式,格式大致是“(Universal link的域名)/(App跳转path)?(后台填的App页面传参kv)&(后台填的首次安装传参kv)&(JSSDK里填的自定义参数kv)&_sdk=umeng&linkid=xxx&_um_chnnl=share”等等,即URL里包含了JSSDK传递的data自定义参数。
您可以
利用下面第3步里的handleLinkURL函数来处理URL,解析出传递的动态参数

此接口建议在应用新安装后第一次启动时调用,而不需要应用每次启动时都调用(并不是每次启动都需要页面跳转)。SDK会把成功获得的数据缓存在本地,APP以后再需要的时候也可以再次调用此接口获得,此时不会再走模糊匹配的逻辑。可是如果用户把App卸载了,那么用户自行重装的时候服务端会再次进行模糊匹配
【IAZ001】实现携带动态参数安装功能/免邀请码安装功能
【IAZ003】新安装app不能跳转到指定页面
3、 唤醒app的系统回调
以下是唤起已安装App的回调,即直接唤起App时传递的自定义参数通过以下回调获取,以下三个回调必须全部添加
//Universal link的回调
-(BOOL)application:(UIApplication*)application continueUserActivity:(nonnull NSUserActivity*)userActivity restorationHandler:(nonnull void(^)(NSArray<id<UIUserActivityRestoring>>*_Nullable))restorationHandler
{
UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
UMMainViewController*vc = platformVc.viewControllers[0];
if([MobClickLink handleUniversalLink:userActivity delegate:vc])
{
return YES;
}
//其它第三方处理
return YES;
}
//URL Scheme回调,iOS9以上,走这个方法
-(BOOL)application:(UIApplication*)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id>*)options
{
NSLog(@"url:%@", url);
UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
UMMainViewController*vc = platformVc.viewControllers[0];
if([MobClickLink handleLinkURL:url delegate:vc])
{
return YES;
}
//其它第三方处理
return YES;
}
//URL Scheme回调,iOS9以下,走这个方法
-(BOOL)application:(UIApplication*)application openURL:(nonnull NSURL *)url sourceApplication:(nullable NSString*)sourceApplication annotation:(nonnull id)annotation
{
NSLog(@"url:%@", url);
UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
UMMainViewController*vc = platformVc.viewControllers[0];
if([MobClickLink handleLinkURL:url delegate:vc])
{
return YES;
}
//其它第三方处理
return YES;
}handleLinkURL函数和 handleUniversalLink用于获取并识别UMeng的deeplink的url的参数并且上传对应的参数。MobClickLinkDelegate 为获取到UMeng的deeplink的回调
如果想实现用户未安装时直接跳转到Appstore页面,请阅读FAQ:未安装跳转到404页面
U-Link集成文档介绍完毕,完成后请在测试设备上测试Deeplink拉起功能是否正常,以及在概况页查看U-Link相关指标数据是否正常
如果您希望统计出H5带来的新老用户,后续在App里的留存率/注册/付费等情况,可以参考统计App后续的留存率/注册/付费等数据
如果您希望实现老带新完整链路奖励和分享邀请KOL用户统计,可以参考社交分享关系链统计功能文档
常见问题
五、配置Universal link
如您想在iOS端使用Universal link拉起方式(仅iOS9及以上用户,用户体验比URL Scheme拉起方式更好),那么您需要先配置Universal link,详情可以参考苹果官方文档。并且自己配置的Universal link需要做重定向到下载页面工作,才能实现未安装时直接跳转到下载页面的功能。
2021年6月3日起,U-Link后台上线了Universal link免费生成及重定向功能,免去开发者自行配置,详情请看生成Universal link及重定向功能说明
1.准备一个支持HTTPS的域名
并且拥有该域名下的上传到根目录的权限(为了上传Apple指定文件)。
2.开发者中心配置
找到对应的App ID,在Application Services列表里有Associated Domains一条,把它变为Enabled就可以了。
3.工程配置
Xcode 11.0版本
工程配置中相应功能:targets->Signing&Capabilites->Capability->Associated Domains,在其中的Domains中填入你想支持的域名,必须以applinks:为前缀。例如是 applink:www.baidu.com,具体步骤如下图:



注意:Universal link的域名和H5页面URL的域名不可以是同一个,详情请看Universal link同域不能唤起
Xcode 11.0以下版本
工程配置中相应功能:targets->Capabilites->Associated Domains,在其中的Domains中填入你想支持的域名,必须以applinks:为前缀。配置项目中的Associated Domains:
4.配置指定文件
创建一个json格式的空文件(必须命名为apple-app-site-association,切记没有后缀),内容如下:
{
"applinks":{
"apps":[],
"details":[
{
"appID":"9JA89QQLNQ.com.apple.wwdc",
"paths":["/wwdc/news/","/videos/wwdc/2015/*"]
}
]
}
}appID :为 teamID.bundleId形式,登陆开发者中心,在Account -> Membership里面可以找到Team ID。
paths:实际上就是限制链接里的哪些路径可以唤醒app,哪些路径不能唤醒app,假如您的域名是www.taobao.com,paths 里填 “*” ,那么此域名下的所有路径都能唤起app。而示例中写了两个path,那么只有www.taobao.com/wwdc/news 和www.taobao.com/videos/wwdc/2015 才能唤起app. 这里填写的path一定要和创建裂变营销活动时填写的App跳转path对应
details数组中可以配置多个APP的信息,如果公司内有多个APP需要支持Universal link,则可以直接添加多个。
5.上传指定文件
将这个文件上传到你的服务器,可以将这个文件放到服务器的根目录下,也可以放到.well-known这个子目录下。这是为了苹果能获取到你上传的文件。
上传完后,自己先访问一下,看看是否能够获取到,以上传到根目录下为例,请在浏览器内直接输入“https://www.baidu.com/apple-app-site-association” ,然后应该可以直接访问apple-app-site-association文件 ,这样才说明配置成功。当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会先请求https://domain.com/.well-known/apple-app-site-association, 如果此文件请求不到,再去请求https://domain.com/apple-app-site-association, 所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association放在./well-known目录下。
此外服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association。
苹果为了方便开发者,提供了一个网页来验证我们编写的这个apple-app-site-association是否合法有效,进入验证网址进行验证
6.验证Universal link是否有效
方法一:
在iOS设备中的备忘录中输入APP能识别的链接,然后直接点击此链接,就会直接跳转到你的app了。或是长按,在出现的弹出菜单中第二项是在’XXX’中打开,这也代表着成功:**
方法二:
或是你将要测试的网址在Safari中打开,在出现的网页上方下滑,可以看到有在”XX”应用中打开
7.在工程里的实现AppDelegate里对应的方法
当点击某个链接,直接可以进我们的app了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。
-(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray*_Nullable))restorationHandler {
if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
{
NSURL *url = userActivity.webpageURL;
if(url是我们希望处理的)
{
//进行我们的处理
}
else
{
[[UIApplication sharedApplication] openURL:url];
}
}
return YES;
}8. 在微信、QQ里配置Universal link
微信目前已支持通过Universal link方式直接打开第三方App,要求SDK版本大于等于1.8.6.1。用户主要需要配置以下几步才能使用正常功能,详情配置步骤可以参照微信Universal link文档(1)首先按照苹果官方文档,配置universal link。微信对Universal Links配置有以下要求:
Universal Links必须支持https
Universal Links配置的paths不能带query参数
微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/*
(2)然后向微信注册自己的应用id和Universal Links。
此外QQ也已支持Universal link跳转方式,要求SDK版本大于等于3.3.6.详情配置步骤可以参考QQ配置文档