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的話也能夠引導玩家去蘋果商店下載。

相關文章
相關標籤/搜索