iOS Widget
1. Widget
- iOS通过在手机屏幕上添加小组件,小组件内容一般是展示用户所关心的内容
- 小组件不是实时刷新,通过设置时间间隔进行刷新(官方文档上设置的是15分钟刷新一次)
- 小组件可以设置点击事件,通过点击可以打开主程序,通过SchemeUrl 可以对点击事件进行处理
2 Widget Size
- 具有三种尺寸: systemSmall(2 * 2 应用图标)、systemMediym (2 * 4 应用图标)、 systemLarge(4 * 4 应用图标) 分别对应下图
3 Widget 交互
小组件不可交互,只能点击; 小组件不可滑动切换内容等交互,只能通过点击进行交互
点击事件分为 widgetUrl 和 Link;并且widgetUrl和Link 只能和主程序交互
Widget中不能放置动图和视频
3.1 widgetUrl
widgetUrl 是针对整个小组件 点击小组件响应(如果有Link 就响应Link)
3.2 Link
LinK 给元素添加点击事件, Link 对 systemSmall样式的组件不生效(systemSmall 样式的小组件只响应widgetUrl)
4 Widget 刷新
4.1 通过主程序刷新
通过在App中调用
WidgetCenter.shared.reloadAllTimelines() WidgetCenter.shared.reloadTimelines(ofKind: "")
4.2 在 getSnapshot 中刷新
打开管理App的小组件页面 小组件会进行刷新
4.3 设置刷新时间
通过TimeLine进行设置(刷新时间有误差)
- .never 不进行刷新,只能通过App进行刷新
- .after 每次刷新后设置下次刷新间隔
- .atEnd 一次性设置多个刷新时间间隔,全部结束后会再次通过TimeLine设置
5 开发环境
手机系统:iOS14以上
开发软件:xcode12以上
开发语言:SwiftUI
6 使用主程序数据
Widget 和 主程序 可以共用的数据有 UserDefaults 和 FileManger
数据互通配置:
1. 在Apple 开发者管理平台上 注册 App Groups
2. 分别在主程序和Widge target的 Sign&Capabilities 中设置 AppGroups