思路就是在getTimeline方法里控制不同的状态,根据主应用app里面传递过来的时间进行换算判断不同时刻的状态,然后把各个时间节点加到Timeline里面。
注意:
// 小组件 一天有 40 ~ 70 次刷新机会
var timeCount = ((24 * 60)/40)
if #available(iOS 16, *) {
timeCount = ((24 * 60)/70)
}
// atEnd: 指Timeline执行到最后一个时间片的时候再执行一次getTimeline方法
// atAfter: 指在某个时间以后有规律的刷新(最短间隔为5分钟,即使设置的时间小于5分钟,系统也会按5分钟进行调用)
// never:指以后不需要刷新了,什么时候需要重新刷新需要App重新告知 Widget
这里使用的.atEnd
ex:
let entry = SimpleEntry(date: Calendar.current.date(byAdding: .hour, value: 1, to: currentDate)!,item_hrv: model_hrv,workOffItem: workOffModel)
entries.append(entry)
一小时后刷新