일반적 아이폰 OS (APP) 사이의 통신에 사용되는 8 과정을 요약

 

응용 프로그램의 AppData의 폴더 내용을 작성하는 아이폰 OS 시스템은 상대적으로 폐쇄 된 시스템, 응용 프로그램은 자신의 샌드 박스 (샌드 박스)에서 실행되고, 각각 아이폰 앱 아이폰 OS 파일 시스템에 읽기 전용 할 수없는 자유에 교차하는 자신의 샌드 박스는 다른 응용 프로그램 샌드 박스의 내용에 액세스 할 수 있습니다.

여기에 설명 된 사진을 쓰기

그래서 시스템 간 통신 iOS의 비교적 고정 된 애플리케이션으로, 일반적인 사용 시나리오 요약하면 다음과 앱 통신.

1, URL 계획

이 통신 응용 프로그램 통신 아이폰 OS가 가장 일반적으로 앱 2에 대한 방법의 OpenURL 앱 1 점프에 의해, 사용 및 URL에 원하는 매개 변수를 가지고하는 것입니다, HTTP GET 요청은 매개 변수 전달에 다소 유사하다. 이 방법은 가장 일반적인 사용의 사용 대상 앱 2의 방식을 지정의 Info.plist에 LSApplicationQueriesSchemes에게 유일한 원천 앱 1을 구성하는 매우 간단하다, 다음의 Info.plist 대상 앱 2의에서 URL 유형을 구성하는 것이 나타냅니다 무엇을 허용 app URL 스킴을 불러 일으킨다.

여기에 설명 된 사진을 쓰기

일반적인 사용 시나리오는 친구의 마이크로 채널 원과 개방형 플랫폼 SDK 공유 기능, 마이크로 블로깅을 공유하거나 장면을 지불하는 것입니다. 예를 들어, 여행 및 조각의 끝에서 택시 마이크로 채널 지불로 이동합니다.

여기에 설명 된 사진을 쓰기

2, 키 체인

키 체인 아이폰 OS 시스템이 위치가 /private/var/Keychains/keychain-2.db에 저장됩니다, 그것은 본질적으로 데이터베이스 sqllite이며, 안전한 저장 용기이지만, 모든 데이터가 암호화되어 보유 등등 사용자 이름, 암호 및 같은 다른 응용 프로그램에 중요한 정보를 저장하는 데 사용할 수 있습니다. 아이폰 OS 시스템은 열쇠 고리 VPN 자격 증명 및 Wi-Fi 비밀번호와 자신을 저장합니다. 이 정보가 여전히 존재 안에, 앱을 삭제 그래서 후에도 키 체인 각 앱의 샌드 박스의 독립적이다.

基于安全和独立于app沙盒的两个特性,Keychain主要用于给app保存登录和身份凭证等敏感信息,这样只要用户登录过,即使用户删除了app重新安装也不需要重新登录。

那Keychain用于App间通信的一个典型场景也和app的登录相关,就是统一账户登录平台。使用同一个账号平台的多个app,只要其中一个app用户进行了登录,其他app就可以实现自动登录不需要用户多次输入账号和密码。一般开放平台都会提供登录SDK,在这个SDK内部就可以把登录相关的信息都写到keychain中,这样如果多个app都集成了这个SDK,那么就可以实现统一账户登录了。

Keychain的使用比较简单,使用iOS系统提供的类KeychainItemWrapper,并通过keychain access groups就可以在应用之间共享keychain中的数据的数据了。

여기에 설명 된 사진을 쓰기

3、 UIPasteboard

顾名思义, UIPasteboard是剪切板功能,因为iOS的原生控件UITextView,UITextField 、UIWebView,我们在使用时如果长按,就会出现复制、剪切、选中、全选、粘贴等功能,这个就是利用了系统剪切板功能来实现的。而每一个App都可以去访问系统剪切板,所以就能够通过系统剪贴板进行App间的数据传输了。 
UIPasteboard的使用很简单,

여기에 설명 된 사진을 쓰기

UIPasteboard典型的使用场景就是淘宝跟微信/QQ的链接分享。由于腾讯和阿里的公司战略,腾讯在微信和qq中都屏蔽了淘宝的链接。那如果淘宝用户想通过QQ或者微信跟好友分享某个淘宝商品,怎么办呢? 阿里的工程师就巧妙的利用剪贴板实现了这个功能。首先淘宝app中将链接自定义成淘口令,引导用户进行复制,并去QQ好友对话中粘贴。然后QQ好友收到消息后再打开自己的淘宝app,淘宝app每次从后台切到前台时,就会检查系统剪切板中是否有淘口令,如果有淘口令就进行解析并跳转到对于的商品页面。

先复制淘口令到剪切板,

여기에 설명 된 사진을 쓰기

把剪切板中的内容粘贴到微信发给微信好友,

여기에 설명 된 사진을 쓰기

微信好友把淘口令复制到淘宝中,就可以打开好友分享的淘宝链接了。

여기에 설명 된 사진을 쓰기

4、 UIDocumentInteractionController

UIDocumentInteractionController主要是用来实现同设备上app之间的共享文档,以及文档预览、打印、发邮件和复制等功能。它的使用非常简单.

首先通过调用它唯一的类方法 interactionControllerWithURL:,并传入一个URL(NSURL),为你想要共享的文件来初始化一个实例对象。然后UIDocumentInteractionControllerDelegate,然后显示菜单和预览窗口。

여기에 설명 된 사진을 쓰기

效果如下,

여기에 설명 된 사진을 쓰기

5、 local socket

这种方式不太常见,也是很容易被iOS开发者所忽略但是特别实用的一种方法。它的原理很简单,一个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

독자 사이의 응용 및 확장 공유하는 같은 공간, 데이터 공유를 포함하여 같은 개발 팀의 그룹 사이의 앱 앱. 그들이 직접 크게 사용자 경험을 개선, 데이터를 공유 할 수있는 경우 같은 팀에 의해 개발 된 여러 응용 프로그램 사이.

여기에 설명 된 사진을 쓰기

여기에 설명 된 사진을 쓰기

추천

출처www.cnblogs.com/tangyuanby2/p/11323653.html