1.Universal Link
理解为苹果官方支持deeplink就行了
2.通过点击HTTP链接启动APP
Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自己起动应用
・App已经安装的前提下:直接启动App然后现实链接内容
・App没有安装的前提下:Web上继续显示链接内容
3.Universal Link的实现方法
首先需要准备一下内容
Web服务器
・独立的domain
・SSL证书
・被签名的JSON文件
iOS应用
・iOS9以上
・Xcode 7・iOS 9 SDK
・Capabilities
・AppDelegate的代理设置
3.1 Capabilities的设置
在Capabilities的设置中,设置`Associated Domains’的Domains内容

例:https://www.facebook.com/ -> applinks:facebook.com
注意:对于subdomain,www的有无要仔细考虑一下
3.2 apple-app-site-association文件的配置
apple-app-site-association文件一定要放在服务器的根目录下!!!!!!
首先要准备一下apple-app-site-association文件
|
1
2
3
4
5
6
7
8
9
10
|
{ "applinks":
{ "apps":
[], "details":
{ "TBEJCS6FFP.com.domain.App":
{ "paths":[ "*" ] } } }} |
paths中的内容为对应App启动的链接路径
全路径的时候使用“*”。
特定位置的时候需要指定具体内容,
|
1
|
["/wwdc/news/",
/videos/wwdc/2015/*] |
TBEJCS6FFP.com.domain.App这部分使用的是你的TeamID和Bundle Identifier
3.3 对apple-app-site-association文件的签名
我使用的是以下的方法对apple-app-site-association进行签名。
|
1
|
cat
apple-app-site-association-unsigned.js | openssl smime -sign -inkey g01-server.key -signer g01-server.crt -certfile g01-dvcacert.cer -noattr -nodetach -outform DER > apple-app-site-association |
3.4 App对应的开发
在AppDelegate.m文件中添加以下代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
-
(BOOL)application:(UIApplication
*)application continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *
_Nullable))restorationHandler{ NSLog(@"continueUserActiity
enter"); NSLog(@"\tAction
Type : %@",
userActivity.activityType); NSLog(@"\tURL
: %@",
userActivity.webpageURL); NSLog(@"\tuserinfo
:%@",userActivity.userInfo); NSLog(@"continueUserActiity
exit"); restorationHandler(nil); NSHTTPCookieStorage *sharedHTTPCookieStorage
= [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies
= [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL]; NSLog(@"COOKIE{name:
%@",
cookies); return true;} |
如代码所示,我们可以获取到跳转链接的一些基本信息
URL内容,ActionType等都是可以获取并且在代码中进行修改的。
4.结果
通过以上的配置后,一个基础的Universal Link应用就开发结束了
点击对应的链接我们可以看到自己的App被成功启动
5.一些事实
相同的服务器不同的目录结构可能导致Universal Link不启动
应用和json文件同时更新时,json更新的部分可能会没有效果
本文详细介绍了如何在iOS应用中实现Universal Link功能,包括所需的技术准备、JSON文件配置及签名方法,并提供了AppDelegate代码示例。
1012

被折叠的 条评论
为什么被折叠?



