iOS打开另一个应用及消息传递

系统的沙盒路径

iOS系统在不越狱情况相对来说是安全一些。系统中每个应用都有自己的沙盒路径,且不越狱情况下,不能访问不属于自己的沙盒路径(访问系统应用除外)。这样的设计保证了应用的安全,不过也带来了一些不方便。

打开另一个应用

系统考虑到这样的局限性,提供了一些方法,可以让一个应用,调用另一个应用的功能。
- (BOOL)openURL:(NSURL*)url;
- (BOOL)canOpenURL:(NSURL *)url;

第二个方法是用来检查被访问应用是否能打开。

调用系统应用的一些方法

有时候需要访问一些系统的应用,比如打开浏览器,拨打电话或者发送短信之类的。

拨打电话

  NSURL * url = [NSURL URLWithString:@"tel://10010"];

发送信息

  NSURL * url = [NSURL URLWithString:@"sms://10010"];

打开浏览器

  NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];

发送邮件

NSURL * url = [NSURL URLWithString:@"mailto://10010@qq.com"];

最后调用下边方法执行

 if ([[UIApplication sharedApplication] canOpenURL:url]) {       
    [[UIApplication sharedApplication] openURL:url];
 }
调用非系统应用

如果调用的应用为非系统应用,就需要做一些相应的配置来实现这一功能,例如像微信支付,支付宝支付,微博分享之类的功能,都是需要把一些信息传递给另一个应用,剩余的工作交给另一个应用完成,处理完成之后返回一个结果信息。

举个粟子
sourceApp打开testApp,则首先在testApp中设置URLType自己的唯一标识,用于在系统中注册自己,以便于其它应用来打开自己。
在infor.plist中添加URLType,其中URL identifier是自己的唯一标识,URL Schemes可以设置多个,类似于系统的sms tel http。

本例中,testApp的URL Schemes设置为testApp,剩下的就需要在sourceApp中打开了,在iOS9中,为了安全起见,有打开应用的白名单设置,因为有的应用会恶意遍历手机中所有的应用。

在sourceApp中的info.plist中添加LSApplicationQueriesSchemes字段,该字段是一个数组,在其中添加testApp,其实不添加也可以打开,只不过不添加调用canOpenURL:url会直接返回false.

打开testApp之后,不同版本的操作系统调用的方法不同,iOS9会调用以下方法,iOS8及以下调用方法与此不同。

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

其中url为打开本应用使用的url,可以携带一些信息。options字典为一些参数信息,如下

{
    UIApplicationOpenURLOptionsOpenInPlaceKey = 0;
    UIApplicationOpenURLOptionsSourceApplicationKey = "com.yoxnet.testDemo";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 你所知道好玩有趣的 iOS URL schemes 有哪些https://www.zhihu.com/questi...
    Crazy2015阅读 3,060评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,145评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,123评论 25 709
  • 当这个北方的花园城市已是寒风呼啸,江南的风光还依旧氤氲着夏季的余温。 今日提起笔来,想回忆曾经走过的那段峥嵘岁...
    樱花梦落阅读 2,738评论 1 0

友情链接更多精彩内容