ios 扩展初试

Demo 地址:https://github.com/YUJINHAI2015/AppExtension
《今日扩展》--widget(窗口小部件)。该扩展可以将今日发生的简短消息放到消息中心“今日”里面。就是下面红框内这两个东东。我们现在来实现一下这个功能。

image.png

理解扩展:
app扩展是如何工作的,
app扩展和app是怎样的关系,
app extension (app扩展),containing app(容器应用),host app(宿主应用)

image.png

1)app extension 只是containing app功能的扩充,并不能当做一个app或者插件来对待,他只能依赖于containing app,app extension 不能单独存在,没有containing app就没有app extension 。
2)你不能上传一个空白的containing app+app extension ,会审核不过的,containing app一定要一些基础的功能。
3)containing app和app extension虽然在一起,但是他们并不是在同一个线程中运行,每个单独的app extension都会在单独的进程中。
4)每一个app extension是以二进制形式封装的,他与containing app的二进制是分开的,每一个app extension都是一个单独的Target,都有自己的Bundle ID.
5)app extension的声明周期是由 host app 决定的。
6)如图,containing app并不能和host app直接通讯,app extension相当于代理的作用。这里我们要明白一点, extension app和 host app可以直接通讯,但是extension app和containing app 却不能直接通讯,只能通过Open URL或者数据共享。
7)iOS8允许containing app 和extension app的target之间通过嵌入式框架访问同一份代码。


image.png

一、开始项目,添加Alamofire
1、新建一个项目Weather

image.png

2、切换到当前目录文件夹下面:
在命令行中输入:
git submodule add https://github.com/Alamofire/Alamofire.git

image.png

3、把Alamofire作为子项目,选中Almofire.xcodeproj拖到Weather里面:

image.png

4、然后在 build Phases 里面的 Target Dependencies 添加Almofire

image.png

5、添加一个New Copy Files Phase

image.png

6、然后重命名为Copy Frameworks ,选择Destination为Frameworks,并添加Alamofire

image.png

7、如果要移除Alamofire
在命令行中输入:
git rm -f Alamofire
rm -rf .git/modules/Alamofire
然后在项目中把报红的Alamofire文件夹删除即可。

二、做一个简单的请求天气的接口
1、搭建一个简单的界面

image.png

2、建一个全局文件Global.swif,做一下简单的网络请求,只是DEMO使用

image.png

3、在viewController中请求数据

image.png

三、添加扩展Widget
1、xcode8 在这里面添加widget,我们选择Today Extension.

image.png

添加成功后看到是这个结果

image.png

2、添加资源文件(自己去找一些icon)
我们在Assets.xcassets里面添加一些icon和一个小按钮。
这些资源是放在Weather Target里面的,Widget是无法访问的。
在Target Membership里面选中Widget选项,这时代表勾上的都可以访问Assets.xcassets里面的资源。

image.png

3、我们在WeatherWidget里面
在MainInterface.Storyboard上添加一个简单的界面
然后每个label连线,按钮添加一个点击事件refresh()

image.png

4、容器app和扩展app的界面都搭建完成了,那么他们是通过什么方式共享数据的呢?
我们现在用NSUserDefaults来存储数据,但是容器app和扩展app是两个单独的app,并不能直接去访问。苹果推出了应用程序组(App Group)只要在同一个程序组里面的app,就可以访问彼此的共享数据。
你要拥有一个开发者账号,分别在Weather和WeatherWidget的App Groups里面添加相同的Key.


image.png
image.png

5、我们在Global.swif文件中添加下面一些代码

image.png

6、把ViewController.swift文件保存方法修改一下

image.png

7、在TodayViewController.swift里面添加代码

image.png

完结!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,522评论 7 249
  • 2017.11.28 星期三 第4篇 看见孩子这几天学习又用心了,做父母心里非常高兴,现在非常喜欢看书...
    桑凤红阅读 168评论 0 0
  • 文/潇洒小兔 01 室友同我说: “她是那么好那么好,好到全身都在发光。我只能远远地看着,不敢将她占为己有。” “...
    花篮子阅读 377评论 0 0
  • 趁着年假驱车从小镇出发,沿乾冕路,一路向西,途经回坪、回龙、森荣、麦地、棉沙、马头五乡,到达凉山与甘孜交界...
    江边漂石阅读 295评论 0 0