iOs Widget后台更新

Dig*_*DEV 9 cocoa-touch objective-c ios ios8-today-widget ios-extensions

根据apple关于widgetPerformUpdateWithCompletionHandler:的内容,当窗口小部件不可见时,iOs Widget也可以更新他的内容.

在我的调试会话中,我注意到每当通知中心视图消失时,todayViewController都会被释放,所以我的问题是:

如果取消分配,我的todayViewController如何响应widgetPerfomrUpdateWithComplationHandler?

我需要每小时小部件更新他的内容,如果它不可见,我该怎么做?

iOs小部件生命周期如何?

请帮帮我:)谢谢

Mid*_* MP 14

小部件生命周期由iOS本身管理.

当你转到后台时,系统会拍摄你今天的小部件的快照.系统管理后台获取(窗口小部件的后台生命周期),它会widgetPerfomrUpdateWithComplationHandler:尽可能调用更新窗口小部件数据并每次拍摄快照.当您再次打开它时,它将首先加载最新的快照并在此之后加载实时数据.


小部件内容更新

更新内容

Today扩展点提供用于管理窗口小部件状态和处理其内容更新的API(您可以在"通知中心框架参考"中阅读此API).尽管Today API中存在一些特定于平台的差异,但两个平台上支持的功能大致相同.

为了帮助您的窗口小部件查看最新版本,系统偶尔会捕获窗口小部件视图的快照.当窗口小部件再次可见时,将显示最新的快照,直到系统将其替换为视图的实时版本.

要在拍摄快照之前更新窗口小部件的状态,请确保符合NCWidgetProviding协议.当您的窗口小部件收到widgetPerformUpdateWithCompletionHandler:call时,使用最新内容更新窗口小部件的视图并调用完成处理程序,使用以下常量之一来描述更新的结果:

NCUpdateResultNewData- 新内容要求您重绘视图

NCUpdateResultNoData- 小部件不需要更新

NCUpdateResultFailed- 更新过程中发生错误

参考今日小工具


通知中心数据更新

通知中心

注意

widgetPerformUpdateWithCompletionHandler:的计划和预期用途旨在作为所有数据/模型更新逻辑的方便主页.如果实施,系统将在适当的时候调用窗口小部件,以便在通知中心可见时以及后台中更新其状态.需要实现才能启用后台更新.预计小部件将执行异步更新并尽可能远离主线程更新的工作.小部件应在工作完成时调用参数块,并传递相应的NCUpdateResult.窗口小部件不应阻止从viewWillAppear返回:关于此操作的结果.相反,小部件应在viewWillAppear中加载缓存状态:为了匹配上一个viewWillDisappear:的视图状态,然后在到达时平滑过渡到新数据.

参考iOS 8.1通知中心


小部件生命周期

小部件生命周期

参考:App扩展的生命周期