iOS_Widget搭建

前言

尝试开发TodayWidget前查了些资料,自己动手时发现,那些技术博客等文档,对于widget的开发,大多都有些陈旧。在Xcode 9环境下,无需itunes connect申请widget ID,无需安装繁多的证书,可以直接进行开发!!!本文将会涵盖widget开发的所有入门内容,保证从0开始,一步步搭建一个可上架的widget项目!


重点

1. 无需安装证书及申请额外Bundle identifier;

2. 不能调整widget视图高度(iOS 11);

3. 文件数据共享要点;

4. widget搭建完整流程。


文章目录

1. 添加widget

2. 设计UI(代码实现)

3. 共享数据及文件

4. 额外功能的实现(App跳转)

5. 需要注意的事项



1. 添加widget

File  -->  New  -->  Target

iOS_Widget搭建_第1张图片

命名,添加后,工程目录下会看到这个group:

iOS_Widget搭建_第2张图片

现在widget已经添加完成了。

对!就是那么简单!不需要额外申请ID,不需要安装证书,运行一下就可以在Today Extension下看到一个“hello word”小组件了。



2. 设计UI(代码实现)

这里只介绍代码实现的方法,需要修改一下info.plist配置。如果喜欢用storyboard,那和普通的视图搭建没什么区别~

点击上图中的info.plist文件

- 删除 NSExtensionMainStoryboard

- 添加NSExtensionPrincipalClass  (String) TodayViewController

得到以下结果:

开始设计UI

在唯一的viewController文件,和一般的视图搭建没有太多不同。讲几点需要注意的。

-widget高度调整

widget默认高度110像素,搜索到的资料显示,调整高度用这个方法

在iOS 11系统下,此方法无效。

笔者添加了手机上250+个App的所有widget组件,全部都是默认高度!未发现一个例外!!!

至此,大致可以下结论:

iOS 11中,TodayWidget高度不可调整。上图方法虽然没有标明已经弃用,虽然打断点发现依然被执行,但是很可惜,并没有效果。【望各位不要和笔者一样苦苦钻研,才终于明发现这一事实。】

-数据共享

当需要调用主App中的持久化数据、文件、图片等一切资料时,务必共享数据!!!这一点在下一部分着重展开。



3. 共享数据及文件

-文件、图片等

这一类比较简单,步骤如下:

点击需要共享的文件,右侧Target Membership点选TodayWidget,共享文件。

iOS_Widget搭建_第3张图片

或者在添加文件时,点击Options ,点选TodayWidget

iOS_Widget搭建_第4张图片

就可以使用了:)

-持久化数据(NSUserDefault)

将TodayWidget和主App设置在同一组内【需联网】

iOS_Widget搭建_第5张图片

通过NSUserDefault进行数据共享。

保存:

提取:

搞定。



4. 额外功能的实现

-widget跳转主App

需要通过URL Schemes进行跳转。

设置App的URL:

主App的info.plist文件中添加以下字段:

iOS_Widget搭建_第6张图片

在widget中使用如下方法跳转:

iOS_Widget搭建_第7张图片

-其他有需要再补充……



5. 需要注意的事项

-版本号需保持相同

Project 中,主App与TodayWidget版本号需一致。

iOS_Widget搭建_第8张图片

提交二进制文件时,若版本号不一致,会报错,但仍然可以成功上传,不知道直接上架会发生什么错误。

iOS_Widget搭建_第9张图片

-widget视图进行NSLog

运行的项目选择widget,这个大家应该都知道哦。



最后成品,用自己的App《问卦六爻》为例。

Today Extension:

iOS_Widget搭建_第10张图片

3D Touch:

iOS_Widget搭建_第11张图片




完。

你可能感兴趣的:(iOS_Widget搭建)