【发布时间】:2026-01-15 02:00:01
【问题描述】:
我有一个 iOS Today 小部件,它进行昂贵的 API 调用(昂贵,因为调用的次数越多,我付的钱就越多)。如果我在我的小部件中实现了 widgetPerformUpdateWithCompletionHandler,那么小部件可以在一天中在后台更新几次,而用户无需查看他们的通知中心。
在应用程序中,应用程序的选项字典中有一个键值对:didFinishLaunchingWithOptions 告诉您应用程序是否正在启动后台,但在小部件中我找不到任何类似的东西.在 UIApplication 中还有获取 applicationState 的调用,这在小部件中也是不可用的。
那么,在我的小部件中是否有任何可靠方法可以知道系统正在后台更新我的小部件并且用户没有查看他们的通知中心来避免不必要的 API 调用?当用户确实查看小部件时,我对内容没有完全更新感到满意,因为我可以在它加载后很快更新它。
我一直在尝试找到一个 hacky 解决方案,例如在后台更新小部件时视图或窗口不同,但还没有找到任何东西。我注意到偶尔在后台初始化小部件时,窗口框架的高度为零,但似乎并非总是如此。
我也知道,如果我不实现 widgetPerformUpdateWithCompletionHandler,那么我的小部件不会在后台更新,这是一个可能的解决方案,但我正在寻找一种可以吃蛋糕的方法也是。
如果有人有任何其他想法,我会全力以赴。谢谢。
【问题讨论】:
标签: ios ios9 today-extension