Wil*_*o X 22 widget ios8 ios-app-extension
我为德国冰球联盟DEL做了一个今天的小部件.
我正在从我们的服务器加载下一个游戏,在tableView中显示它们.加载过程在建议的方法"widgetPerformUpdateWithCompletionHandler"中启动.最初我在"viewWillAppear"中加载了一些缓存数据.
到目前为止,一切都很好!

但过了一会儿(一天),小部件停止工作.当我打开通知中心时,窗口小部件显示正常,但它永远不会再次更新.我必须从通知中心删除小部件,并且必须再次添加它.之后,小部件可以工作一天,然后再次停止工作.
要查看窗口小部件正在做什么,我在表单视图上方添加了一个简单的白色视图,同时在"widgetPerformUpdateWithCompletionHandler"中加载数据以查看窗口小部件是否正在执行任何操作.小部件工作时会显示白色视图.当它不工作时,状态视图不会出现.所以我认为在窗口小部件在通知中心活动一段时间后,不会调用方法"widgetPerformUpdateWithCompletionHandler".
我不知道是什么导致小部件停止工作.有任何想法吗?
Siy*_*eng 19
我遇到了同样的问题,completionHandler(NCUpdateResultNoData);
即使没有返回响应,我也会在网络请求后立即致电解决.我发现如果没有调用完成处理程序,widgetPerformUpdateWithCompletionHandler
将不再调用will,因此将不再有更新.还要确保在请求调用返回后在所有分支中调用完成处理程序.
Big*_*esy 13
正如其他人所提到的,这是由于没有事先调用completionHandler过后widgetPerformUpdateWithCompletionHandler调用.无论如何,你需要确保completionHandler被调用.
我建议处理这个的方法是将completionHandler保存为实例变量,然后在viewDidDisappear中调用它失败:
@property(nonatomic, copy) void (^completionHandler)(NCUpdateResult);
@property(nonatomic) BOOL hasSignaled;
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
self.completionHandler = completionHandler;
// Do work.
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
if (!self.hasSignaled) [self signalComplete:NCUpdateResultFailed];
}
- (void)signalComplete:(NCUpdateResult)updateResult {
NSLog(@"Signaling complete: %lu", updateResult);
self.hasSignaled = YES;
if (self.completionHandler) self.completionHandler(updateResult);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6088 次 |
| 最近记录: |