我想检查用户是否将我的小部件添加到主屏幕,是否有用于此的 API?我找不到一个。WidgetCenter.getCurrentConfigurations
返回应用程序提供的所有可用小部件,而不是使用过的小部件。
我寻找这样一个 API 的原因是:
- 我想报告小部件的使用情况。
- 我想决定是否应该通过
WidgetCenter
应用程序中发生状态更改时触发时间线重新加载。
不幸的是,我不认为这样的 API 存在(还)。
对于 1. 我会写一些东西来标识共享用户默认容器中的小部件。钩子将是getSnapshot(for:,in:,completion:)
或getTimeline(for:,in:,completion:)
与context.isPreview == false
. 现在困难的部分是您没有获得任何小部件的 id,因此您无法区分具有相同配置的两个小部件(afaik)。
对于 2. 我认为这是(并且将是)不透明的,因此您只需告诉WidgetCenter
重新加载特定或所有配置,并且当当前没有小部件放置在主屏幕上时,什么也不会发生。
方法WidgetCenter.shared.getCurrentConfigurations
确实返回用户配置的小部件的数量:
WidgetCenter.shared.getCurrentConfigurations { widgets
if let widgets = widgets, widgets.count > 0 {
// User did configure at least one widgets
}
}
这也是根据文档:
检索有关用户配置的小部件的信息。