如何解决如何在WidgetKit中重置意图扩展配置
我有一个用户可以登录的应用程序。如果用户已登录,则我将为我的窗口小部件显示一个占位符,并且可以通过意图扩展对其进行配置。
配置有两个选项:
- 第一个选项取决于当前登录用户的用户名。
- 第二个选项取决于第一个选项的值。
这对于1个用户来说效果很好,但是,如果该用户注销,然后使用其他帐户登录,则当他们尝试配置窗口小部件时仍会选择旧的选定选项,这是错误的选项,因为现在已经不一样了用户。此外,旧数据仍显示在小部件中。
如何重置WidgetKit中的小部件配置?这意味着,当用户尝试对其进行配置时,所有先前的配置将被取消选择并且为空。
我尝试过
WidgetCenter.shared.reloadAllTimelines()
但这只会重新加载时间轴方法,而不会重置配置。
我查看了Apple的文档,也找不到任何相关信息。
非常感谢
解决方法
你不能。您唯一的选择是忽略小部件端的配置选项并向用户显示某种错误消息,表明他们的配置需要更新。 INExtension 没有提供处理这个(还)的方法
,我遇到了与小部件显示陈旧的配置选项相同的问题。我通过强制刷新共享的Core Data数据库中正在使用的所有对象来解决此问题。我是在“ getTimeline”方法中完成的。
,我找到了这个解决方案,但仅针对动态属性:为IntentHandler中的每个用户使用不同的标识符。 示例:
class IntentHandler: XXExtension { ... }
extension IntentHandler: XXDynamicXXXSelectionIntentHandling {
func provideXXXOptionsCollection(for intent: XXDynamicXXXSelectionIntent,with completion: @escaping (XXObjectCollection<XXX>?,Error?) -> Void) {
let userId = (UserDefaults.myGroup().object(forKey: "UserId" ) as? String) ?? ""
let items: [XXX] = UserDefaults.myGroup().sharedXxx.map { (sharedXxx) -> XXX in
return XXX(identifier: userId + "_" + sharedXxx.Id // <== add unique prefix ===
display: sharedXxx.visibleName())
}
let collection = XXObjectCollection(items: items)
completion(collection,nil)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。