Ios 如何在通知中心频繁更新“今日”窗口小部件?
我发现我的NotificationCenter小部件不经常重新加载。因此,将显示过时的数据。每次打开“今日”视图时,我都无法找到让小部件刷新的方法。我看到过像NBA Gametime这样的应用程序,它们可以在我每次下拉查看小部件时更新Ios 如何在通知中心频繁更新“今日”窗口小部件?,ios,objective-c,ios8-today-widget,Ios,Objective C,Ios8 Today Widget,我发现我的NotificationCenter小部件不经常重新加载。因此,将显示过时的数据。每次打开“今日”视图时,我都无法找到让小部件刷新的方法。我看到过像NBA Gametime这样的应用程序,它们可以在我每次下拉查看小部件时更新 如何在我的应用程序中获得此功能?在您的WidgetPerformUpdate WithCompletionHandler中,您需要让您的小部件知道它需要更新 根据我自己的实验和中的报告,似乎每次打开“今日/通知”区域时都会调用TodayViewController
如何在我的应用程序中获得此功能?在您的
WidgetPerformUpdate WithCompletionHandler
中,您需要让您的小部件知道它需要更新
根据我自己的实验和中的报告,似乎每次打开“今日/通知”区域时都会调用
TodayViewController.viewDidLoad()
函数。更具体地说,iOS 8.1发行说明中有以下内容:
widgetPerformUpdateWithCompletionHandler:的计划和预期用途旨在为所有数据/模型更新逻辑提供方便。如果实现,无论是在通知中心可见时还是在后台,系统都会适时调用小部件更新其状态。需要实现才能启用后台更新。预计小部件将尽可能多地执行异步更新和脱离主线程的工作
所以,要回答你的问题:
widgetPerformUpdateWithCompletionHandler
方法的频率,我认为苹果更喜欢这样viewDidLoad
函数,因此您可以在该方法中调用update函数。或者你可以把你需要显示的任何更新放在该功能的小部件中,尽管我不知道这会对应用程序性能产生什么样的影响initWithCoder
或initWithNibName
中的任何一个似乎在小部件每次显示在屏幕上时都会被调用,因此您可以在这些文件中调用来更新小部件,但是如果我没记错的话,视图此时实际上并没有实例化,所以最好不要在这些函数中使用代码来更新小部件
-(void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
// Perform any setup necessary in order to update the view.
// If an error is encoutered, use NCUpdateResultFailed
// If there's no update required, use NCUpdateResultNoData
// If there's an update, use NCUpdateResultNewData
completionHandler(NCUpdateResultNewData);
}