6

我想检查用户是否将我的小部件添加到主屏幕,是否有用于此的 API?我找不到一个。WidgetCenter.getCurrentConfigurations返回应用程序提供的所有可用小部件,而不是使用过的小部件。

我寻找这样一个 API 的原因是:

  1. 我想报告小部件的使用情况。
  2. 我想决定是否应该通过WidgetCenter应用程序中发生状态更改时触发时间线重新加载。
4

2 回答 2

0

不幸的是,我不认为这样的 API 存在(还)。

对于 1. 我会写一些东西来标识共享用户默认容器中的小部件。钩子将是getSnapshot(for:,in:,completion:)getTimeline(for:,in:,completion:)context.isPreview == false. 现在困难的部分是您没有获得任何小部件的 id,因此您无法区分具有相同配置的两个小部件(afaik)。

对于 2. 我认为这是(并且将是)不透明的,因此您只需告诉WidgetCenter重新加载特定或所有配置,并且当当前没有小部件放置在主屏幕上时,什么也不会发生。

于 2020-11-06T16:43:38.593 回答
0

方法WidgetCenter.shared.getCurrentConfigurations 确实返回用户配置的小部件的数量:

WidgetCenter.shared.getCurrentConfigurations { widgets 
    if let widgets = widgets, widgets.count > 0 {
        // User did configure at least one widgets
    }
}

这也是根据文档

检索有关用户配置的小部件的信息。

于 2021-11-09T12:16:08.693 回答