URL Scheme是什么
URL Scheme有什么作用
URL Scheme怎么使用
URL Scheme是什么
由于蘋果的app都是在沙盒中,相互是不能訪問數(shù)據(jù)的脂崔。但是蘋果還是給出了一個可以在app之間跳轉(zhuǎn)的方法:URL Scheme滤淳。簡單的說,URL Scheme就是一個可以讓app相互之間可以跳轉(zhuǎn)的協(xié)議砌左。每個app的URL Scheme都是不一樣的脖咐,如果存在一樣的URL Scheme,那么系統(tǒng)就會響應(yīng)先安裝那個app的URL Scheme绊困,因為后安裝的app的URL Scheme被覆蓋掉了文搂,是不能被調(diào)用的。
URL Scheme有什么作用
那么app之間的跳轉(zhuǎn)有什么作用呢秤朗?我們所使用的每一個app就相當于一個功能煤蹭,app的跳轉(zhuǎn)可以使得每個app就像一個功能組件一樣,幫助我們完成需要做的事情取视,比如三方支付硝皂,搜索,導(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
在這個方法里昧捷,可以獲取到觸發(fā)這個方法的 URL,可以通過對這個 URL 進行判斷罐寨,例如根據(jù)不同的 Host靡挥,不同的 Query String 來執(zhí)行不同的動作。
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
NSLog(@"%@", [url absoluteString]);
// 在 host 等于 item.taobao.com 時衩茸,說明一個寶貝詳情的 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];
}
}
在你的動作執(zhí)行完成了之后贮泞,有可能時需要返回到原有app的,這樣就需要你的app跳轉(zhuǎn)協(xié)議的url里面應(yīng)該能傳入調(diào)用者app的跳轉(zhuǎn)協(xié)議幔烛,這樣用戶跳轉(zhuǎn)到你的app完成動作后就能跳轉(zhuǎn)回去了啃擦。
最后附上一些好玩有趣的iOS URL Scheme,來自知乎:
http://www.zhihu.com/question/19907735
轉(zhuǎn)載:
http://www.reibang.com/p/eed01a661186