URL Scheme

URL Scheme是什么
URL Scheme有什么作用
URL Scheme怎么使用

URL Scheme是什么

由于蘋果的app都是在沙盒中,相互是不能訪問數(shù)據(jù)的。但是蘋果還是給出了一個(gè)可以在app之間跳轉(zhuǎn)的方法:URL Scheme。簡單的說,URL Scheme就是一個(gè)可以讓app相互之間可以跳轉(zhuǎn)的協(xié)議。每個(gè)app的URL Scheme都是不一樣的,如果存在一樣的URL Scheme,那么系統(tǒng)就會(huì)響應(yīng)先安裝那個(gè)app的URL Scheme,因?yàn)楹蟀惭b的app的URL Scheme被覆蓋掉了,是不能被調(diào)用的。
URL Scheme有什么作用

那么app之間的跳轉(zhuǎn)有什么作用呢?我們所使用的每一個(gè)app就相當(dāng)于一個(gè)功能,app的跳轉(zhuǎn)可以使得每個(gè)app就像一個(gè)功能組件一樣,幫助我們完成需要做的事情,比如三方支付,搜索,導(dǎo)航,分享等等。
URL Scheme怎么使用

要跳轉(zhuǎn)到別人的app,就要知道別人的app的跳轉(zhuǎn)協(xié)議是什么,需要傳入什么參數(shù),我們常見的跳轉(zhuǎn)協(xié)議有下面這些:

1.打開Mail
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://info@icloud.com"]]
2.打開電話
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://18688886666"]];
3.打開SMS
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:18688886666"]];

所以,如果我們希望別人打開我們的app,只要在plist文件中配置一下你的跳轉(zhuǎn)協(xié)議即可,如下圖所示:

跳轉(zhuǎn)協(xié)議配置.jpg

“emp601602://”就是我的跳轉(zhuǎn)協(xié)議了,編譯一下app,在safari中輸入“emp601602:// ”就可以跳轉(zhuǎn)到我的app中。

“emp601602:// ”只能讓用戶跳轉(zhuǎn)到我們的app,之后的處理是在appDelegate的代理中,代理方法如下:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation

在這個(gè)方法里,可以獲取到觸發(fā)這個(gè)方法的 URL,可以通過對(duì)這個(gè) URL 進(jìn)行判斷,例如根據(jù)不同的 Host,不同的 Query String 來執(zhí)行不同的動(dòng)作。

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSLog(@"%@", [url absoluteString]);

    // 在 host 等于 item.taobao.com 時(shí),說明一個(gè)寶貝詳情的 url,
    // 那么就使用本地的 TBItemDetailViewController 來顯示
    if ([[url host] isEqualToString:@"item.taobao.com"]) {

        // 這里只是簡單地假設(shè) 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];
    }
}

在你的動(dòng)作執(zhí)行完成了之后,有可能時(shí)需要返回到原有app的,這樣就需要你的app跳轉(zhuǎn)協(xié)議的url里面應(yīng)該能傳入調(diào)用者app的跳轉(zhuǎn)協(xié)議,這樣用戶跳轉(zhuǎn)到你的app完成動(dòng)作后就能跳轉(zhuǎn)回去了。

最后附上一些好玩有趣的iOS URL Scheme,來自知乎:
http://www.zhihu.com/question/19907735

轉(zhuǎn)載:
http://www.itdecent.cn/p/eed01a661186

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容