iOS通用链接

什么是通用链接

通用链接是iOS9出的一个特性,他能让用户通过链接直接打开你的APP。经常配合分享功能,让用户快速进入到我们的APP里面。

APP的两大引流功能 --> 分享+推送。

分享功能应当要能将对APP感兴趣的用户引入到APP,当前微信的浏览器将URL Schemes屏蔽掉了,一般做法是是只能借助系统浏览器中转。使用通用链接可以跳过微信对URL Schemes的屏蔽。

使用通用链接的前提条件

1.能够通过 SSL 访问域名。(即支持https://访问)

2.支持上传一个无后缀文件到域名解析的服务器的.well-known文件下面,并且能通过链接直接访问并且下载。

如果后台服务器是支持SSL的,直接将文件丢在根目录下面,然后配置一下iis的MIME的权限(因为iis默认不支持无后缀的文件,所以访问不到)。

如果后台服务器的域名还不支持SSL,那么先去腾讯云,阿里云去购买证书,然后到iis下面去安装这个证书。

实现步骤

1.开启对应的AppIDs的Associated Domains服务

登录APPDevelop,找到当前app的App ID并且将此AppId的 Associated Domains选项置为enable.

2.编辑此AppId对应的Provisioning Profiles,并且重新下载双击安装.

3.打开Xcode项目,开启项目的Associated Domains,这时候会看到左边目录下多出了一个文件。

4.编写一个无后缀的apple-app-site-association

{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.com.xxxx.xxxx",
"paths": [ "/123/*"]
}
]
}
}

说明:

  • appID里面TeamID是项目的TeamID(可以从Membership中查看),com.xxxx.xxxx是项目的BundleID

  • details里面是不同的链接方式(可以是任意字符串)都能进入到APP里面,开发者可以通过控制details里面的paths来进行不同页面不同模块的跳转。 上面最后生成的链接为https://www.xxxx.com/123/

生成文件后,将apple-app-site-association文件上传到服务器的.well-known文件夹下面。然后验证文件是否合格:

苹果验证网站 https://www.xxxx.com/apple-app-site-association

即为:域名+“apple-app-site-association”进行验证(有时候这里校验也不是很准确)

5.测试一下通用链接是否生效。 这里可以将刚才的链接 https://www.xxxx.com/123/ 写到备忘录中,点击链接,如果出现[在"xxxx(App名称)"中打开],即为链接生效.

到这里,通用链接生成成功,可以在分享时使用此链接,从微信也可以直接跳转到app内,而不用通过Safari中转.

与App交互:

在AppDelegate中,实现代理:

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb])
{
NSURL *url = userActivity.webpageURL;
}
return YES;
}

利用这个代理,能够捕捉通过通用链接进入APP的时机,以及通用链接上面附带的信息。通过这些信息可以实现跳转/其他功能。