iOS打開另一個(gè)應(yīng)用及消息傳遞

你所知道好玩有趣的 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)書作者”。

最后編輯于
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 系統(tǒng)的沙盒路徑 iOS系統(tǒng)在不越獄情況相對(duì)來說是安全一些。系統(tǒng)中每個(gè)應(yīng)用都有自己的沙盒路徑,且不越獄情況下,不能訪...
    Storydo閱讀 645評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,616評(píng)論 19 139
  • 目標(biāo) 平常我們做iOS開發(fā),會(huì)經(jīng)常遇到打開其他的APP的功能。本篇文章講的就是打開別人的APP的一些知識(shí)。我們的目...
    謙言忘語閱讀 182,540評(píng)論 77 309
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • 這是閱讀該指南的一些筆記,說說是筆記,其實(shí)就是把一些自己決定重要的知識(shí)給翻譯了一遍,因?yàn)橛⑽淖x著讀著就把前面的給忘...
    沒陽(yáng)光的午后閱讀 3,127評(píng)論 6 44

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