如果我的小部件正在使用,如何查询WidgetKit?

问题描述

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

我选择这样的API的原因是:

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

解决方法

不幸的是,我认为尚不存在这样的API。

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

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