读书人

ios应用程序间相互启动

发布时间: 2013-11-13 14:04:18 作者: rapoo

ios应用程序间互相启动

这个就是Safari与Alocola之间的交互过程。?接下来介绍一下自定义URL Schema的过程。?1:创建Xcode项目?2:打开项目,在其中的info.plist中添加如下图所示字段:?ios应用程序间相互启动
其中的"lifengzhong"便是我为此应用注册的自定义协议名称,其他应用如果想调用我的应用,只要打开形似:“lifengzhong://XXX”的URL便可以了。?3:在项目AppDelegate中添加函数:[cpp]?view plaincopy

  1. -?(BOOL)application:(UIApplication?*)application?openURL:(NSURL?*)url?sourceApplication:(NSString?*)sourceApplication?annotation:(id)annotation??
  2. {??
  3. ????if?([sourceApplication?isEqualToString:?@"xxx.xxx.xxx"])?{??
  4. ????????//xx??
  5. ????}??
  6. ????return?YES;??
  7. }??

此函数便是URL Call的处理函数了,每当其他应用通过URL打开此应用时,该函数都会被调用。参数url是传进的url,sourceApplication是呼叫应用的bundle identifier,通过此参数,应用可以对呼叫的应用进行过滤。annotation是呼叫过程中可以附加的额外参数,这里没有用到。?4:当另一个应用想调用我的应用时,只需拼接好URL,,然后打开URL即可,十分方便:?[cpp]?view plaincopy
  1. NSURL*?url?=?[NSURL?URLWithString:?@"lifengzhong://1,545166"];??
  2. [[UIApplication?sharedApplication]?openURL:?url];??

这里的1,545166是我自定义的参数,你可以根据自己需要定义URL的格式。????通过上面介绍的URL Schema方法,算是实现了某种程度的进程间通信,但这种方式的一个缺点是,同一时刻还是只能有一个进程在前台,主动呼叫的应用在调用成功后必须进入后 台,所以能传递的只有URL中所带的参数或annotation中所带的参数。调用的过程中会出现应用之间的切换,用户体验不好。但聊胜于无,苹果好歹还 是留了这么一个口子,感恩吧。?转自:?http://blog.sina.com.cn/s/blog_8a6c97b5010162f0.html

读书人网 >操作系统

热点推荐