什么是universal link?
通用链接是Apple在WWDC2015上为iOS9引入的一个新功能,是通过传统HTTP链接来启动App的技术。可以使用相同的网址打开网站和App。通过唯一的网址,就可以链接到App中具体的视图,不需要特殊的schema。如果用户没有安装App则链接到对应的普通网页。之前使用scheme进行应用之间的跳转比较麻烦,需要写很多的scheme字段。
使用universal link需要什么条件呢?
有一个注册的域名
通过 SSL 访问域名
支持上传一个 JSON 文件到你的域名
至少 iOS 9 beta 2 版本 [下载],这很重要, 因为如果是之前的测试版本你需要做额外的操作。
至少 Xcode 7 beta 2 [下载]
开始使用universal link?
第一步:添加域名到 Capabilities
首先, 你必须在 Xcode 的 capabilities 里 添加你的 APP 域名, 必须用 applinks: 前置它:还添加一些你可能拥有的子域和扩展(www.domain.com, news.domain.com 等等)。
这将使你的 APP 从你的域名请求一个特殊的 JSON 文件 apple-app-site-association。当你第一次启动 APP,它会从 https://domain.com/apple-app-site-association 下载这个文件。跳到下个步骤来了解如何构建这个文件。
这将使你的 APP 从你的域名请求一个特殊的 JSON 文件 apple-app-site-association。当你第一次启动 APP,它会从 https://pre-jr1.letv.com/apple-app-site-association下载这个文件。跳到下个步骤来了解如何构建这个文件。
第二步:创建apple-app-site-association文件,记住此文件不要添加后缀名,编辑完成此文件之后要上传到我们的服务器。
编辑apple-app-site-association文件的内容:
{
"applinks":{
"apps":[],
"details":
[
{
"appID":"4B7W4R45RH.com.letv.jr",
"paths":["/mleplatform/current/","/mleplatform/regular/"]
}
]
}
}
appID的拼接方式为:teamID+bundleID
第三步:如果要处理通用链接的话,需要在APPDelegate方法中进行处理。
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *webpageURL = userActivity.webpageURL;
NSString *host = webpageURL.path;
if ([host isEqualToString:@"/mleplatform/current/detail.html"]) {
[[LFDRouter shared] openURL:[NSString stringWithFormat:@"lefinance://currentDeposit/detail?%@", webpageURL.query]];
}else if ([host isEqualToString:@"/mleplatform/regular/project-detail.html"]) {
[[LFDRouter shared] openURL:[NSString stringWithFormat:@"lefinance://fixedDeposit/detail?%@", webpageURL.query]];
}
} else if ([userActivity.activityType isEqualToString:@"com.apple.corespotlightitem"]) {
// spotlight
NSString *url = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];
if (url) {
[[LFDRouter shared] openURL:url];
}
}
return YES;
}