跳转到主要内容
PRODUCT DOCUMENTS

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

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

[IUI003]生成Universal link及重定向功能说明

Universal link是iOS端唤起方式更友好的方法,苹果官方提供了Universal link配置方法,开发者可以参考文档自行配置,并且需要将wakeupurl重定向到下载页面,才能实现用户未安装时直接跳转到下载页面。

因为开发者自行配置Universal link和重定向成本较高,部分开发者没有https服务器不能配置,并且H5页面不可以和Universal link在同域名下,所以U-Link从2021年6月3日起上线了免费生成Universal link及重定向到下载页面功能,以下介绍如使用友盟官方生成Universal link功能

一、后台生成Universal link域名

开发者第一次进入到Deeplink配置页面时,可以看见有一栏是填写Universal link链接

开发者如果已经有了可用的Universal link链接,可以直接输入。但是仍需要重定向到下载页面工作,否则App未安装时会出现404等现象deeplink首页面

如果开发者因为种种原因没有可用的Universal link链接,可以由友盟后台生成可用的链接

请点击填写框右侧的【填写参数】按钮

填写参数

可以发现下方增加了两行必填的参数TeamID和BundleID,开发者必须要填写这两个参数,友盟后台才可以生成一个唤起App的Universal link链接,原因请看apple-app-site-associatio文件配置原理

  • TeamID:苹果开发者的标识,需要去苹果开发者官网上查看,登录之后,打开Account,点击左侧菜单中的MemberShip,就能看到teamID了,

  • BundleID:iOS应用的唯一标识

点击保存

填写完这两个参数,再填写完此页面的其他必填参数,点击页面下方的保存按钮,友盟服务端就会自动生成一个Universal link链接,并且直接填充到了输入框中

自动填充

生成的Universal link链接与appkey有关,如果您修改了TeamID和BundleID,为您生成的链接是不会变的

我们会将此Universal link域名重定向到您填写的iOS应用的默认下载地址,这样用户未安装时会直接跳转到默认下载地址。

弹框提示2

点击【保存】后会出现一个弹框,您还需要进行以下操作,才能实现此Universal link唤起App的功能

二、iOS工程配置

1.开发者中心配置

找到对应的App ID,在Application Services列表里有Associated Domains一条,把它变为Enabled就可以了。

2.Xcode工程配置

  • Xcode 11.0版本

工程配置中相应功能:targets->Signing&Capabilites->Capability->Associated Domains,在其中的Domains中填入第一步友盟生成的Universal link域名

Domains里必须以applinks:为前缀。并且不需要输入https://字符,例如友盟后台生成的链接是https://www.baidu.com,这里需填写applink:www.baidu.com。在友盟后台弹框中选择【复制】按钮即可负责需要填写的格式

  • Xcode 11.0以下版本

工程配置中相应功能:targets->Capabilites->Associated Domains,在其中的Domains中填入第一步您复制的友盟生成的Universal link域名。必须以applinks:为前缀,其余方式同上。配置项目中的Associated Domains:

三、apple-app-site-association文件读取说明

友盟会将配置的apple-app-site-association文件上传到Universal link域名的/根目录下,

例如生成的Universal link链接为:https://www.baidu.com。 那么您只需要在浏览器内输入 https://www.baidu.com/apple-app-site-association 链接,就可以访问到apple-app-site-association文件具体内容

Universal link唤起App会依赖iOS系统去读取apple-app-site-association这个文件,但是iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开去读取此文件。并且这个读取时间是不可控的,最多会有两三天的延迟。

尤其是iOS 14系统有缓存,如果TeamID和BundleID有变化,文件内容并不会实时更新。这会造成部分设备能唤起部分设备不可以唤起,解决办法就是在有问题的设备上每天都尝试打开App(尽量触发iOS系统去读取apple-app-site-association文件)

四、验证Universal link是否有效

完成以上三步后,就可以验证友盟生成的Universal link域名能否唤起您的App了。

方法一:

在iOS设备中的备忘录中输入APP能识别的链接,然后直接点击此链接,就会直接跳转到你的app了。或是长按,在出现的弹出菜单中第二项是在’XXX’中打开,这也代表着成功:**

方法二:

或是你将要测试的网址在Safari中打开,在出现的网页上方下滑,可以看到有在”XX”应用中打开

五、在工程里的实现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;
}

六、在微信里配置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。

七、手动输入Universal link方法

友盟后台为开发者生成的Universal link是不可以编辑修改的,如果开发者后续不希望用友盟生成的链接,希望用自己生成的Universal link链接,可以点击输入框右侧的【手动输入自己域名】

手动输入

点击后友盟后台生成的Universal link会被清空,您也不用再填写TeamID和BundleID了

清空