让苹果小部件频繁刷新 - 使用蛮力

Posted

技术标签:

【中文标题】让苹果小部件频繁刷新 - 使用蛮力【英文标题】:Getting apple widgets to refresh frequently - using brute force 【发布时间】:2021-11-18 01:05:35 【问题描述】:

我尝试了多种操作组合来调用小部件刷新

我的主屏幕上有邮件应用小部件,它需要永远刷新。

我希望设置一个快捷方式来调用它。但是不存在

因为我的 iPad 一直插在电源上,所以我很高兴以最小的间隔这样做

我相信这是可以做到的。其他人是如何做到这一点的

也欢迎其他解决方案,但我似乎只能走捷径??

【问题讨论】:

【参考方案1】:

WidgetKit 小部件更多地是关于显示信息,而不是关于实时更新和与用户的交互。

在the documentation 中,Apple 表示每个小部件都有一个刷新配额(“每日预算”)。

预算分配是动态的,会考虑许多因素,包括:

小部件对用户可见的频率和时间。 小部件的上次重新加载时间。 小部件的包含应用程序是否处于活动状态。

对于用户经常查看的小部件,每日预算通常包括 40 到 70 次刷新。此速率大致相当于每 15 到 60 分钟重新加载一次小部件,但这些时间间隔通常会因涉及的许多因素而变化。

请注意,如果小部件不经常显示(例如,用户已将其放在今日视图中并且此后从未打开过今日视图),ios 可能会暂停刷新计划。

至于您的问题,您确实有办法随时触发小部件刷新。但是,这样做需要您设置推送通知。看,小部件拥有的应用程序可以触发刷新,并且这些刷新不受配额限制。

所以基本上你要做的就是在你需要刷新它的小部件时(例如,当收件箱中有新电子邮件时)向你的应用发送推送通知,然后应用会调用WidgetCenter’sreloadTimelines(ofKind:)reloadAllTimelines() 方法立即刷新小部件。

【讨论】:

谢谢,我开始认为这是不可能的。很遗憾我可以从默认邮件应用程序中得到这种行为 不错的应用创意——你觉得怎么样哈哈——苹果会这样做

以上是关于让苹果小部件频繁刷新 - 使用蛮力的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一个小部件的点击方法刷新小部件

频繁更新小部件(比 updatePeriodMillis 允许的更频繁)

是刷新小部件的方法,它是颤动的关键

SwiftUI 小部件无法刷新

每 5 分钟或定期刷新 Flutter Text 小部件内容

Flutter:在 Navigation.pop 上刷新父小部件