您能否告诉我在函数中接收远程通知时使用fetchCompletionHandler的最佳做法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
我看到人们通常在上述函数的末尾写下这段代码:
completionHandler(UIBackgroundFetchResultNewData);
如果我写的话怎么办?
completionHandler(UIBackgroundFetchResultNoData);
或者即使我没有提供上述代码会发生什么?
注意:我使用的是xcode7.1,objective-c,ios9.1
答案 0 :(得分:1)
- UIBackgroundFetchResult.NewData - 在获取新内容时调用,并且应用程序已更新。
- UIBackgroundFetchResult.NoData - 在新内容的抓取过程中调用,但没有内容可用。
- UIBackgroundFetchResult.Failed - 对于错误处理很有用,当fetch无法通过时会调用此方法。
你必须调用它来让iOS知道你的后台获取结果是什么。它使用此信息来安排将来的背景提取。
如果你忽视了这一点,操作系统可能会延迟未来的背景提取。
良好使用的一个例子是here。
更新:不调用此处理程序的后果可能包括完全终止您的应用。