问题描述
我想检查用户是否将我的窗口小部件添加到主屏幕,是否有用于此的API?我找不到一个。 WidgetCenter.getCurrentConfigurations
返回应用程序提供的所有可用小部件,而不是已使用的小部件。
我选择这样的API的原因是:
- 我想报告小部件的使用情况。
- 我想决定在应用程序中发生状态更改时是否应该通过
WidgetCenter
触发时间轴重新加载。
解决方法
不幸的是,我认为尚不存在这样的API。
对于1.我将在共享的用户默认容器中写一些标识小部件的东西。钩子将是getSnapshot(for:,in:,completion:)
或getTimeline(for:,completion:)
与context.isPreview == false
。现在最困难的部分是您无法获得该窗口小部件的任何ID,因此您无法区分具有相同配置(afaik)的两个窗口小部件。
对于2,我认为这是(并且将是)不透明的,因此您只需要告诉WidgetCenter
重新加载特定或所有配置,并且当当前在主屏幕上未放置任何小部件时,就不会发生任何事情。