1. 程式人生 > >iOS APP與APP之間的通訊方式

iOS APP與APP之間的通訊方式

1、URL Scheme

這個最常見了,基本接入分享、支付、地圖的,都會用到

2、UIPasteboard

其實就是貼上板,常見的就是淘口令啥的,也挺常見的

3、Keychain

這個就是一個安全的儲存容器,本質其實就是資料庫

,它的位置儲存在/private/var/Keychains/keychain-2.db,不過它所儲存的所有資料都是經過加密的,可以用來為不同的app儲存敏感資訊,比如使用者名稱,密碼等。iOS系統自己也用keychain來儲存VPN憑證和Wi-Fi密碼。它是獨立於每個App的沙盒之外的,所以即使App被刪除之後,Keychain裡面的資訊依然存在。基於安全和獨立於app沙盒的兩個特性,Keychain主要用於給app儲存登入和身份憑證等敏感資訊,這樣只要使用者登入過,即使使用者刪除了app重新安裝也不需要重新登入。
那Keychain用於App間通訊的一個典型場景也和app的登入相關,就是統一賬戶登入平臺。使用同一個賬號平臺的多個app,只要其中一個app使用者進行了登入,其他app就可以實現自動登入不需要使用者多次輸入賬號和密碼。一般開放平臺都會提供登入SDK,在這個SDK內部就可以把登入相關的資訊都寫到keychain中,這樣如果多個app都集成了這個SDK,那麼就可以實現統一賬戶登入了。
Keychain的使用比較簡單,使用iOS系統提供的類KeychainItemWrapper,並通過keychain access groups就可以在應用之間共享keychain中的資料的資料了。
4、UIDocumentInteractionController 這個常見的就是開啟方式,然後出現不同的原生/非原生的APP,主要是用來實現同裝置上app之間的共享文件,以及文件預覽、列印、發郵件和複製等功能。它的使用非常簡單.
首先通過呼叫它唯一的類方法 interactionControllerWithURL:,並傳入一個URL(NSURL),為你想要共享的檔案來初始化一個例項物件。然後UIDocumentInteractionControllerDelegate,然後顯示選單和預覽視窗。 5、local socket

不太常見,它的原理很簡單,一個App1在本地的埠port1234進行TCP的bind和listen,另外一個App2在同一個埠port1234發起TCP的connect連線,這樣就可以建立正常的TCP連線,進行TCP通訊了,那麼就想傳什麼資料就可以傳什麼資料了。

這種方式最大的特點就是靈活,只要連線保持著,隨時都可以傳任何相傳的資料,而且頻寬足夠大。它的缺點就是因為iOS系統在任意時刻只有一個app在前臺執行,那麼就要通訊的另外一方具備在後臺執行的許可權,像導航或者音樂類app。

它是常用使用場景就是某個App1具有特殊的能力,比如能夠跟硬體進行通訊,在硬體上處理相關資料。而App2則沒有這個能力,但是它能給App1提供相關的資料,這樣APP2跟App1建立本地socket連線,傳輸資料到App1,然後App1在把資料傳給硬體進行處理。

6、AirDrop 通過AirDrop實現不同裝置的App之間文件和資料的分享; 7、UIActivityViewController iOS SDK中封裝好的類在App之間傳送資料、分享資料和操作資料;
8、App Groups App Group用於同一個開發團隊開發的App之間,包括App和Extension之間共享同一份讀寫空間,進行資料共享。同一個團隊開發的多個應用之間如果能直接資料共享,大大提高使用者體驗。