本文转载至 http://blog.csdn.net/jinkaiouyang/article/details/35558623  感谢撰文作者的分享
 
 

WWDC14 最令人兴奋的除了新语言switf外,无疑就是整个APPLE平台的开放了。说到开放,当然就是属于Extension了。Extension实现了各个应用程序间功能和资源的共享。

下面我们来看看Extension具体有哪些

Today -- 在 iOS 系统的“通知中心”里,支持第三方应用集成的“小工具、小部件”,比如 eBay 提供的价格查看小工具、日历的通知等。

Share -- 在 iOS 系统所有菜单中,支持第三方应用提供的“分享、共享”功能。

Photo Editing -- 在 iOS 系统的“照片”应用中,支持使用第三方应用“图片编辑”应用直接编辑。

Action -- 在 iOS 系统的“Safari”浏览器里,支持第三方应用程序“插件”,比如微软的 Bing Translate。

Custom keyboard- 在 iOS 系统的“键盘”功能里,支持第三方“键盘输入法”,比如 Swype。

下面我们来看看对于我们比较有价值的两点

一、Today

Today – 即通知中心里面的今天那一栏。在Today里面展示的Extension又叫做Widgets:是小工具、小插件的意思。在这里我们能够快速的获取一些比较重要的信息。

下面看看实现的几个小DEMO

1、安装带有Widgets的应用后,系统不会默认帮你打开,你需要在通知中心—今天一栏—拖到最下方—Edit ,你就会看到已经添加的Widgets和待添加的Widgets

2、将QQ空间添加进来(添加进来的还可以手动去移除,点击左边的按键就会出去remove按钮)

3、按Done退出后,就可以看到添加的效果

(1)模拟读取了空间最新的几条动态展示。这样用户不用打开空间就可以在通知中心里面立刻看到最新的一些动态。

(2)这里模拟展现了一些新的通知信息,比如你有几条新动态啦、xxx回复了你、新增访客、新上架的cover等等信息。点击其中的某一项,可以打开Qzone进入到具体的功能页面。

二、   Share

分享Eension。

1、系统相册里面打开图片,选择分享,弹出的菜单中,能选择分享到包含Shareextension的应用中。如下所示

2、点击分享,就会在当前界面弹出如下分享输入框,分享类型支持图片(可自定义张数)、视频、文字、链接等等。

通过这种操作,不需要打开其他APP跳转,在当前界面即可快速实现分享操作。

三、  Photo Editing

Photo Editing跟Share类似。在图片当前界面,即可调用第三方APP编辑图片的能力,进行图片编辑,编辑完成后,能够立刻将结果返回给调用方。

选择图片,进行编辑,选择左上角的按键,弹出选项框,在选项框里的第三方APP就提供了图片编辑能力,点击就可以在当前界面呼起第三方APP的图片编辑界面进行图片编辑。

  

上面都是一些体验和产品特性上的介绍。下面我们来看看码农们真正关心的,这些高大上的功能是如何实现的。

extension简介

1、Extension是啥?

extension不是一个独立的APP,他包含在我们的发布的APP安装包中,是一个独立的二进制文件,运行于独立进程中,但是只能附属某个APP。extension跟应用一起打包发布,不能够单独发布,不能单独下载,也不能直接由用户运行 。

2、Extension的生命周期

从上图可以看出,Extension使用完会立刻被系统kill掉。所以Extension不能完成耗时的上传下载等任务,那这些任务用什么来完成呢,请继续往下看~~~~

3、Extension与Containing APP的关系

APP extension是一个单独执行的二进制文件,APPextension 运行的时候 containing APP(包含extension 的APP),而且不一定处于运行中。

因此extension不会与containing APP直接调用,而extension与呼起他的host APP 是可以直接调用的。

APP extension通过Open URL的方式打开Containing APP。通过资源共享的方式获取同一块数据。如下图所示:

4、代码共享 --Sharing Code with Your Containing App

Extension 和Containing APP共享代码的方式是通过embedded framework的方式进行共享。

NOTE

If your iOS applinks against an embedded framework, you must specify a minimum deploymenttarget of iOS 8.0. If your iOS extensions link against an embedded frameworkbut their containing app does not, you can use an earlier deployment target forthe app.

5、数据共享 --Sharing Data with Your Containing App

使用Xcode和portal创建App groups,并将extension和containing app加入到group中,即可实现共享数据。

6、与网页交互 -- Accessing a Webpage

通过extension还可执行js跟网页交互,更改网页数据。

7、处理耗时任务 -- Performing a Long-Running Task

当extension需要执行耗时操作的时候,需要使用NSURLSession来实现后台数据传输。因为后台数据传输模式使用与extension不同的precess进行,及时extension被关闭了传输仍能够继续进行。

简单的Today widgets构建

1、首先,我们得先建立一个APP工程,我们才能够在该containing APP的基础上添加我们的extensions。这个就不介绍了

2、添加extension target。 File->New->Target  选择ApplicationExtension一栏,如下图

APPLE已经为我们提供好了所有extension的模板,里面已经包含好了所有基本的配置。

3、选择TodayExtension 点击next,命名后就完成了。

4、无需改一行代码,运行,运行结果如下图所示:

5、一个个Widgets就是一个个viewController,他所有的事件循环跟controller是一致的。我们可以在他基础上添加各种button labelimageview甚至是tableview。但是因为他是在通知中心中,有很多的widget,为了避免影响体验,tablveview最好是不要支持滚动的。

6、针对widget更新,新增了一条协议NCWidgetProviding

当通知中心中extension展示的时候会先回调这一个函数进行数据更新,数据更新完我们需要调用completionHandler通知界面更新。

每次更新完界面,通知中心都会截图一张图保存,目的是为了下次能够更快的展示数据。

以上就是Today extension --- widget的简单介绍,实现一个的demo很简单,但是要跟我们APP联动起来,要跟后台实现协议数据的传递,还是比较麻烦,需要考虑如何复用现有代码、需要考虑数据的共享、如何使用后台模式获取数据。

这里简单介绍了苹果的开放组件—extension和如何构建一个初步的demo。还有更多精彩的点需要进一步挖掘。

http://wangzz.github.io/blog/2014/06/23/wwdc2014zhi-app-extensionsxue-xi-bi-ji/

WWDC2014 IOS8 APP Extensions的更多相关文章

  1. WWDC2014之App Extensions学习笔记

    一.关于App Extensions extension是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制. extension的出现,为用户 ...

  2. App Extensions篇之Share Extension

    转载请注明出处:http://www.cnblogs.com/zhanggui/p/7119572.html 1.前言 这里主要是对App Extension的一些介绍以及详细给大家介绍一下Share ...

  3. App Extensions篇之Sticker Pack Extension

    转载请标明原文链接:http://www.cnblogs.com/zhanggui/p/7151795.html 前言 上一篇文章对App Extension做了简单介绍以及对Share Extens ...

  4. iOS App Extensions

    一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app之间的数据交互成为可能.用户可以在app中使用其他应用提供的功能,而无需离开当前的应用. 在iOS 8系统 ...

  5. iOS App Extensions 推荐文章

    写的非常不错,读完后,基本的extension的套路就清楚了,也是我们的园友写的,感谢他: http://www.cnblogs.com/xdream86/p/3855932.html 下面这个教程是 ...

  6. iOS 8 Extensions

       本文由海水的味道收集整理,欢迎转载    当前版本 0.0.1  iOS 8 Extensions 一.扩展概述 扩展(Extension)是iOS 8中引入的一个非常重要的新特性.扩展让app ...

  7. iOS8中添加的extensions总结(一)——今日扩展

    通知栏中的今日扩展 分享扩展 Action扩展 图片编辑扩展 文件管理扩展 第三方键盘扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutor ...

  8. App Extension Today

     App Extensions 是iOS8新开放的扩展机制,之后不断增加功能.App Extension Programming Guide: Today   不喜欢废话,直接上干货!   一:重要概 ...

  9. iOS - App Extension 整体总结

    一.App Extension的介绍 App Extension可以让你扩展你APP的自定义功能和内容,使用户可以在与其他应用或者系统进行互动的时候去使用它.app extension即为本文所说的e ...

随机推荐

  1. HDU 2594 kmp算法变形

    Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  2. GridControl 控制列中的控件显示

    一.需求描述 根据条件判断Checkbox的显示,先上个图,, 类似Demo中的这个,因为不能控制文本的显示,所以需对该列的其它事件做些处理,  二.解决方案 1.添加GridControl上需要的控 ...

  3. 【Tyvj2133&BZOJ1146】网络管理Network(树套树,DFS序,树状数组,主席树,树上差分)

    题意:有一棵N个点的树,每个点有一个点权a[i],要求在线实现以下操作: 1:将X号点的点权修改为Y 2:查询X到Y的路径上第K大的点权 n,q<=80000 a[i]<=10^8 思路: ...

  4. WebRTC入门学习之初识WebRTC (转)

    一.WebRTC基本架构 图一  WebRTC总体架构,摘自百度百科 先说说WebRTC大致的实现思路:我们创建的web app,然后在app中调用W3C提供的JS API,JS API 会调用浏览器 ...

  5. hdu 4932 BestCoder Round #4 1002

    这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  6. bq25896 charging status CHRG_STAT register 0xB

    condition 1 :                    adapter 全部電流往 system去,                    battery current 也往 system ...

  7. C#连接OleDBConnection数据库的操作

    对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对我们屏蔽了具体的实现细节,并提供了一种统一的实现方法. Connection类有四种 ...

  8. 使用Zint和Zxing实现二维码的编码与解码(Using open-source tools to generate and decode Q-R code)

    1.Zint生成二维码 http://sourceforge.net/projects/zint/ [1]从上述站点下载Zint工具 [2]安装Zint工具 [3]使用Zint工具生成二维码,注意选择 ...

  9. AC日记——[Sdoi2013]森林 bzoj 3123

    3123: [Sdoi2013]森林 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 3216  Solved: 944[Submit][Status] ...

  10. 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂

    链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子   时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...