[译]AppExtension编程指南:扩展基础2

App Extension Programming Guide-App Extension Essentials AppExtension编程指南:扩展基础2html

Understand How an App Extension Works 了解应用程序扩展的工做原理编程

iOS8/OS X v10.10app

翻译自苹果官方文档 App Extension Programming Guide--App Extensions Essentialside

了解应用程序扩展的工做原理

iOS8/OS X v10.10网站

应用程序扩展不是一个应用,相反,它是主体应用程序(containing app)中一个单独的包,并能生成单独的二进制文件。与主体应用程序不一样,应用扩展实现的是一个特定的、狭义范围内的任务,而且要严格遵循扩展点的协议。ui

应用程序扩展的生命周期

由于一个应用程序扩展不是一个应用,因此它的生命周期和运行环境也不一样于应用。通常状况来讲,应用程序扩展的生命周期始于用户从某个应用中启动它。容许用户选择某一种扩展来帮助他们执行某项任务的应用,咱们称之为扩展的载体应用(host app)载体应用(host app)定义了激活扩展的上下文环境,并在其发送请求以响应用户操做时开始扩展的生命周期。当应用扩展完成载体应用发送的请求任务后,该扩展的生命周期也随之结束。翻译

好比说,假定这样一个场景,用户在扩展载体应用(host app)中选中一段文字,点击分享按钮,并从分享列表中选择某一个分享扩展,将选中的内容分享至社交网站。此时,载体应用就会向扩展发送一个包含用户所选文本的请求,启动该扩展,从而去响应用户的请求,即分享所选文本的内容。应用扩展基本的生命周期概括在下图2-1中。3d

基本的扩展生命周期

在图2-1中的第2步中,系统实例化载体应用请求中肯定的扩展,并在二者之间创建通讯通道。而后扩展在载体应用的上下文场景中显示相关界面,并使用其在载体应用请求中接收到的项目来执行任务(在上述的例子中,扩展接收到的项目是用户选中的文本)code

在图2-1的第3步中,用户在扩展中执行或取消某个任务,或者直接能够忽略该扩展。在对用户的操做作出响应的过程当中,扩展会根据载体应用的请求当即开始执行任务,但若是有特殊须要时,扩展也会在系统后台执行任务,这种状况下,载体不会显示扩展相关界面,而且用户返回到其先前在载体应用中的上下文环境。当应用扩展执行完任务后,无论是马上返回仍是延迟返回,但最后其执行结果都会返回给载体应用。cdn

当扩展开始执行任务以后(或者开始在系统后台执行任务),系统就会终止扩展,好比图2-1中的第4步。

应用扩展是如何进行通讯的

当应用扩展在运行的时候,它只会直接和载体应用(host app)进行通讯,而扩展和主体应用containing app之间不会直接通讯。在扩展运行的过程当中,主体应用(containing app)甚至都不运行。另外,载体应用(host app)主体应用(containing app)之间也不会进行通讯。图2-2中描述了运行中的应用扩展载体应用(host app)以及主体应用(containing app)这三者之间的关系。

运行中的扩展仅和载体应用进行通讯

当一个扩展须要和主体应用containing app进行通讯时,只能在载体应用肯定的上下文环境中进行间接通讯。好比,一个应用扩展有可能会运行调用它的应用程序。在这个例子中,扩展使用了不能与 containing app 传递消息的API。此外,应用扩展与其 containing app 能够在一个定义为私有的共享容器中访问数据。图2-3描述了扩展和 containing app 之间的间接通讯类型。

运行中的扩展能够与其containing app进行间接通讯

​ 注意:在底层,系统使用进程间通讯来确保应用扩展和扩展载体应用共同来开启无缝结合体验。在你的代码中,你无需考虑这些底层的通讯机制,由于你使用的是扩展点和系统提供的高级API。

相关文章
相关标签/搜索