iOS DeepLinkKit使用簡單介紹

Update: 2017.04.08 添加了使用iOS DeepLinkKit使用Universal Links的部分ios

---------------------------------------------------------git

廢話很少說,先說作這個的需求:github

1.應用中有些社交元素的分享會分享一個連接到facebook, twitter, google+這類的社交媒體上瀏覽器

2.當用戶點擊某個連接的時候先跳轉到本身的頁面,而後再傳遞參數到iOS應用上打開指定的分享數據app


思路:iOS提供了Scheme這個東西可以從瀏覽器或者其它應用跳轉到本身的應用,查詢scheme相關的內容。post

在大概瞭解了Scheme機制以後在github上找到DeepLinkKit這個第三方組件。google


使用例如如下:url

1.在plist中加入一個URL Type, 比方URL Schemes叫com.test.testrest

2.在AppDelegate 中加入例如如下代碼:code

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    router = [[DPLDeepLinkRouter alloc] init];
    
    //瀏覽器調用url: "com.test.test://L/aa/123/456", 這樣bb取到123, cc取到456
    router[@"/aa/:bb/:cc"] = ^(DPLDeepLink *link) {
        NSLog(@"----------DeepLink: %@, %@----------", link.routeParameters[@"bb"], link.routeParameters[@"cc"]);
    };
}

3.在AppDelegate 中加入例如如下代碼:
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    BOOL success = [router handleURL:url withCompletion:nil];
    return success;
}

4.將應用退到後臺,在瀏覽器中輸入com.test.test://L/aa/123/456,這裏router的block會生效。


解釋一下,這裏L是DeepLinkKit這個組件須要的。但內容可隨便輸入,總之在host以前必須要有一個字段。aa是DeepLinkKit中提到的host。這個要跟router註冊時的字符同樣。其它沒必要解釋了。

用下來,DeepLinkKit仍是比較簡單的,但文檔寫得比較很差,我看了很久代碼,當中研究他的demo幫助最大。



但願對需要作深度連接的同窗有幫助,有不論什麼問題,請在這裏留言,咱們一塊兒交流。謝謝!


-------------------------

Update: 2017.04.08

從iOS 9.2開始增長了Universal Links機制來進一步增強應用間跳轉相關的功能,關於這方面的內容推薦閱讀一下Deferred Deep Linking in iOS ,這篇文章對Deep Linking的兩種方式有很是具體的解說。你不可錯過。我就不搬運過來了。

使用iOS DeepLinkKit要支持Universal Links,首先你要在你官網的根文件夾下放一個JSON文件,前面提到的網頁裏面都有具體的講述。

在作好這些前期準備後,你需要將下面代碼增長到你的項目裏面:

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

    return [self.router handleUserActivity:userActivity withCompletion:NULL];
}


另外,因爲我有比較多的相似於收集效果之類的需求,很是早以前就開始使用Branch了。這個用起來也不錯,只是官方的文檔也全是英文的,眼下尚未比較好的中文使用簡單介紹,可能對一些對本身的英文能力不夠自信的朋友會形成壓力,有時間我整理一份中文的使用簡單介紹出來吧。

相關文章
相關標籤/搜索