universal link使用

iOS9以后,苹果推出了universal link方案,该方案较url scheme有明显的改善。url scheme很难作到惟一。web

而 universal link倒是你本身控制的。json

 

一、有一个HTTPS 的web server服务器,这个域名就是用来作universal link的。 api

二、创建一个json文件,命名为apple-app-site-association 注意不要有后缀。文件里的内容为一段json:数组

{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.BUNDLEID",
"paths": [ "*"]
}
]
}
}浏览器

//TEAMID替换为你的付费Apple ID的team id. BUNDLEID替换为你的应用的包名服务器

paths为路径,* 万能匹配符,具体的路径能够在数组中添加。app

将apple-app-site-association这个文件上传到HTTPS web服务器根目录或者.well-known的子目录。测试

三、配置Xcode.打开Capabilities里的Associated Domains,在里面添加你的web server域名。网站

格式为:applinks:baidu.com //baidu.com替换为你的web server域名,注意域名的正确性,后面不要有/结束符,以applinks:为前缀url

确保在开发者后台Apple Developer网站你的App Id包含Associated Domains功能。

四、在AppDelegate的代理方法中处理用户的点击事件

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{

    // NSUserActivityTypeBrowsingWeb 由Universal Links唤醒的APP

    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {

        NSURL *webpageURL = userActivity.webpageURL;

        NSString *host = webpageURL.host;

        if ([host isEqualToString:@"api.r2games.com.cn"]) {

            //进行咱们须要的处理

            NSLog(@"TODO....");

        } else {

            NSLog(@"openurl");

            [[UIApplication sharedApplication]openURL:webpageURL options:nil completionHandler:nil];

//            [[UIApplication sharedApplication]openURL:webpageURL];

        }

    }else{

        NSLog(@"UNKNOWN");

    }

    return YES;

}

 

 

测试:苹果提供了一个连接来测试你的apple-app-site-association文件是否有效。

测试会告诉你哪些地方须要改进,测试没有经过也没有关系,能够直接在浏览器输入你配置的web server域名来测试。

https://search.developer.apple.com/appsearch-validation-tool/

universal link的一个好处了,这个网页你能够在里面作不少处理,包括用户的点击响应。若是手机上装了该app,则网页会提示在app中打开。若是没有安装app的话也能够引导玩家去苹果商店下载。

相关文章
相关标签/搜索