你所知道好玩有趣的 iOS URL schemes 有哪些
https://www.zhihu.com/question/19907735
系統(tǒng)的沙盒路徑
iOS系統(tǒng)在不越獄情況相對(duì)來說是安全一些。系統(tǒng)中每個(gè)應(yīng)用都有自己的沙盒路徑,且不越獄情況下,不能訪問不屬于自己的沙盒路徑(訪問系統(tǒng)應(yīng)用除外)。這樣的設(shè)計(jì)保證了應(yīng)用的安全,不過也帶來了一些不方便。
打開另一個(gè)應(yīng)用
系統(tǒng)考慮到這樣的局限性,提供了一些方法,可以讓一個(gè)應(yīng)用,調(diào)用另一個(gè)應(yīng)用的功能。
- (BOOL)openURL:(NSURL*)url;
- (BOOL)canOpenURL:(NSURL *)url;
第二個(gè)方法是用來檢查被訪問應(yīng)用是否能打開。
調(diào)用系統(tǒng)應(yīng)用的一些方法
有時(shí)候需要訪問一些系統(tǒng)的應(yīng)用,比如打開瀏覽器,撥打電話或者發(fā)送短信之類的。
*撥打電話*
NSURL * url = [NSURL URLWithString:@"tel://10010"];
*發(fā)送信息*
NSURL * url = [NSURL URLWithString:@"sms://10010"];
*打開瀏覽器*
NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];
*發(fā)送郵件*
NSURL * url = [NSURL URLWithString:@"mailto://10010@qq.com"];
最后調(diào)用下邊方法執(zhí)行
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
調(diào)用非系統(tǒng)應(yīng)用
如果調(diào)用的應(yīng)用為非系統(tǒng)應(yīng)用,就需要做一些相應(yīng)的配置來實(shí)現(xiàn)這一功能,例如像微信支付,支付寶支付,微博分享之類的功能,都是需要把一些信息傳遞給另一個(gè)應(yīng)用,剩余的工作交給另一個(gè)應(yīng)用完成,處理完成之后返回一個(gè)結(jié)果信息。
舉個(gè)粟子
sourceApp打開testApp,
則首先在testApp中設(shè)置URLType自己的唯一標(biāo)識(shí),用于在系統(tǒng)中注冊(cè)自己,以便于其它應(yīng)用來打開自己。
在infor.plist中添加URLType,其中URL identifier是自己的唯一標(biāo)識(shí),URL Schemes可以設(shè)置多個(gè),類似于系統(tǒng)的sms tel http。
本例中,testApp的URL Schemes設(shè)置為testApp,剩下的就需要在sourceApp中打開了,在iOS9中,為了安全起見,有打開應(yīng)用的白名單設(shè)置,因?yàn)橛械膽?yīng)用會(huì)惡意遍歷手機(jī)中所有的應(yīng)用。
在sourceApp中的info.plist中添加LSApplicationQueriesSchemes字段,該字段是一個(gè)數(shù)組,在其中添加testApp,其實(shí)不添加也可以打開,只不過不添加調(diào)用canOpenURL:url會(huì)直接返回false.
打開testApp之后,不同版本的操作系統(tǒng)調(diào)用的方法不同,iOS9會(huì)調(diào)用以下方法,iOS8及以下調(diào)用方法與此不同。
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
其中url為打開本應(yīng)用使用的url,可以攜帶一些信息。options字典為一些參數(shù)信息,如下
{ UIApplicationOpenURLOptionsOpenInPlaceKey = 0; UIApplicationOpenURLOptionsSourceApplicationKey = "com.yoxnet.testDemo";}
文/Storydo(簡(jiǎn)書作者)原文鏈接:http://www.itdecent.cn/p/33fadc813966著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”。