小组件要点

1、Include Live Activity : 灵动岛、实时活动相关

2、Include Configuration App Intent:iOS 17以上小组件配置相关

3、policy表示小组件时间线的刷新策略,有以下三种:never:永不刷新,atEnd:最后一个TimelineEntry用完之后立即刷新,after(Date):指定日期之后刷新小组件

4、每个活跃时间段不能超过28s,例如getTimeLinecompletion必须在28s以内完成,否则刷新超时

5、有人测试过小组件24小时可以获得50-60次刷新,时间线刷新策略的时间设置大概是15-60分钟,如果主App在前台同时调用多次刷新,系统会合并,直到主App退到后台,小组件的时间线才会开始刷新,因此不用担心主App刷新调用次数过多。

6、和主APP通讯方法 有2中,自选即可

UserDefaults(suiteName: "group.com.xxxx.app")
let groupURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.xxx.app")let fileURL = groupURL?.appendingPathComponent("app.json")

7、主App活跃时,可以通过WidgetKit提供的刷新时间线的方法通知小组件时间线刷新

WidgetCenter.shared.reloadAllTimelines() // 刷新所有小组件
WidgetCenter.shared.reloadTimelines(ofKind: "widgetKind") // 根据kind刷新小组件

8、代码配置widgetURL和Link点击对应位置可以打开APP