如果正在使用我的小部件,如何查询 WidgetKit?
Posted
技术标签:
【中文标题】如果正在使用我的小部件,如何查询 WidgetKit?【英文标题】:How to query WidgetKit if my widgets are being used? 【发布时间】:2020-12-15 22:59:29 【问题描述】:我想检查用户是否将我的小部件添加到主屏幕,是否有用于此的 API?我找不到一个。 WidgetCenter.getCurrentConfigurations
返回应用提供的所有可用小部件,而不是使用过的小部件。
我寻找这样一个 API 的原因是:
-
我想报告小部件的使用情况。
我想决定当应用中发生状态更改时是否应通过
WidgetCenter
触发时间线重新加载。
【问题讨论】:
你能解决这个问题吗? widgetCenter.getCurrentConfigurations 不会得到应用程序使用的吗? ,这是我目前看到的。 这是我尝试时看到的,但从那时起已经有一段时间了。我不确定该方法的行为是否发生了变化,或者苹果是否提出了另一种实现我们想要的方法。我不知道目前的情况,但我们无法找到解决方案。 【参考方案1】:方法WidgetCenter.shared.getCurrentConfigurations
确实返回用户配置的小部件的数量:
WidgetCenter.shared.getCurrentConfigurations widgets
if let widgets = widgets, widgets.count > 0
// User did configure at least one widgets
这也是根据documentation:
检索有关用户配置的小部件的信息。
【讨论】:
【参考方案2】:很遗憾,我认为(目前)不存在这样的 API。
对于 1. 我会写一些东西来标识共享用户默认容器中的小部件。钩子是getSnapshot(for:,in:,completion:)
或getTimeline(for:,in:,completion:)
和context.isPreview == false
。现在困难的部分是您没有获得任何小部件的 id,因此您无法区分具有相同配置的两个小部件 (afaik)。
对于 2。我认为这是(并且将是)不透明的,因此您只需告诉 WidgetCenter
重新加载特定或所有配置,当当前没有小部件放置在主屏幕上时,什么也不会发生。
【讨论】:
以上是关于如果正在使用我的小部件,如何查询 WidgetKit?的主要内容,如果未能解决你的问题,请参考以下文章