iOS 開發之 URL Scheme


在 iOS 里,程序之間都是相互隔離,目前並沒有一個有效的方式來做程序間通信,幸好 iOS 程序可以很方便的注冊自己的 URL Scheme,這樣就可以通過打開特定 URL 的方式來傳遞參數給另外一個程序。

例如在 iPad 上瀏覽網頁,並且 iPad 已經安裝了 淘寶 HD,那么就打開下面這個鏈接就會在淘寶 HD 中查看這個商品的詳細信息,也可以方便的使用淘寶 HD 進行購買、收藏等操作。

配置

配置

要為 iOS 程序添加自定義協議的支持是一件很方便的事,只需要在程序的 Info.plist 添加一個 URL types 節點就可以了。在這個節點里,可以設置這個程序所支持的自定義協議名稱,像 http、ftp 這種,一般我們可以設置為程序英文名稱,像淘寶客戶端中就設置了 taobao,這樣 taobao:// 這個形式的 URL 就會關聯到淘寶客戶端的 App。

iOS 開發之  URL Scheme - 戰狼 - 戰狼
 

步驟為

    1:如果沒有URL types,隨意點一個key行后面+號,輸入大寫URL選擇URL types

           2:右鍵URL types,選擇add row

           3:item0下改成url identifier,后面的value值隨意寫,com.xx,xx

           4:加一行,選擇url schemes,item后面值寫成你需要的,譬如上面的todolist,以后別的app就可以用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"todolist://"]];

啟動你的app。

 

實現

在 Info.plist 里面設置完 URL types 之后,就可以在程序中處理這類 URL 的打開請求了。

在外部程序中,如果打開了指定自定義協議的 URL,程序中 application delegate 的 application:handleOpenURL: 方法就會被調用,在這個方法里,可以獲取到觸發這個方法的 URL,可以通過對這個 URL 進行判斷,例如根據不同的 Host,不同的 Query String 來執行不同的動作。

 

- (void)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    NSLog(@"%@", [url absoluteString]);

    // 在 host 等於 item.taobao.com 時,說明一個寶貝詳情的 url,

    // 那么就使用本地的 TBItemDetailViewController 來顯示

    if ([[url host] isEqualToString:@"item.taobao.com"]) {

        // 這里只是簡單地假設 url 形式為 taobao://item.taobao.com/item.htm?id=12345678

        // 先獲取要查看的寶貝詳情的 itemId

        NSString *itemId = [[url query] substringFromIndex:[[url query] rangeOfString:@"id="].location+3];

        // 使用本地 ViewController 來顯示淘寶商品詳情

        TBItemDetailViewController *controller = [[TBItemDetailViewController alloc] initWithItemId:itemId];

        [self.navigationController pushViewController:controller animated:YES];

        [controller release];

    }

}

轉子:http://www.cocoachina.com/newbie/tutorial/2012/0529/4302.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM