iOS 进程间通信的8种方式

2021-06-08  本文已影响0人  林鹏_dev

1、URL scheme

      这个是iOS APP通信最常用到的通信方式,APP1通过openURL的方法跳转到APP2,并且在URL中带上想要的参数,有点类似HTTP的get请求那样进行参数传递。这种方式是使用最多的最常见的,使用方法也很简单只需要源APP1在info.plist中配置LSApplicationQueriesSchemes,指定目标App2的scheme;然后再目标App2的info.plist 中配置好URLtypes,表示该App接受何种URL scheme的唤起。

2、Keychain

      iOS 系统的keychain是一个安全的存储容器,它本质上就是一个sqlite数据库,它的位置存储在/private/var/Keychains/keychain-2.db,不过它索八坪村的所有数据都是经过加密的,可以用来为不同的APP保存敏感信息,比如用户名,密码等。iOS系统自己也用keychain来保存VPN凭证和WiFi密码。它是独立于每个APP的沙盒之外的,所以即使APP被删除之后,keychain里面的信息依然存在

3、UIPasteBoard

      uipasteboard是剪切板功能,因为iOS 的原生空间UItextView,UItextfield,UIwebView ,我们在使用时如果长按,就回出现复制、剪切、选中、全选、粘贴等功能,这个就是利用系统剪切板功能来实现的。

4、UIDocumentInteractionController

      uidocumentinteractioncontroller 主要是用来实现同设备上APP之间的贡献文档,以及文档预览、打印、发邮件和复制等功能。

5、Local socket

    原理:一个APP1在本地的端口port1234 进行TCP的bind 和 listen,另外一个APP2在同一个端口port1234发起TCP的connect连接,这样就可以简历正常的TCP连接,进行TCP通信了,然后想传什么数据就可以传什么数据了

NSMatchPort进程通信就是该种方式

6、AirDrop

      通过 Airdrop实现不同设备的APP之间文档和数据的分享

7、UIActivityViewController

      iOS SDK 中封装好的类在APP之间发送数据、分享数据和操作数据

8、APP Groups

      APP group用于同一个开发团队开发的APP之间,包括APP和extension之间共享同一份读写空间,进行数据共享。同一个团队开发的多个应用之间如果能直接数据共享,大大提高用户体验.

CFNotificationCenterRef是iOS 进程间通信的一种方式,是一种通知的机制,适用于container app 与 extension app进行通信。

使用之前,需要为container app与extension app设置 App Group,这样才能接收到彼此发送的进程间通知。

进程间通信如果需要传递复杂的数据,可以使用第三方库MMWormhole

上一篇下一篇

猜你喜欢

热点阅读