【问题标题】:APNS in ios applicationios应用程序中的APNS
【发布时间】:2016-01-27 01:53:29
【问题描述】:

您能否告诉我在函数中接收远程通知时使用 fetchCompletionHandler 的最佳做法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler

我看到人们通常在上面的函数末尾写这段代码:

完成处理程序(UIBackgroundFetchResultNewData);

如果我写怎么办:

完成处理程序(UIBackgroundFetchResultNoData);

或者即使我不放上面的代码会发生什么?

注意:我使用的是 xcode7.1、objective-c、ios9.1

【问题讨论】:

    标签: ios objective-c apple-push-notifications


    【解决方案1】:
    • UIBackgroundFetchResult.NewData - 在获取新内容并更新应用程序时调用。
    • UIBackgroundFetchResult.NoData - 在获取新内容但没有可用内容时调用。
    • UIBackgroundFetchResult.Failed - 用于错误处理,当获取无法通过时调用。

    你必须调用它来让 iOS 知道你后台获取的结果是什么。它使用此信息来安排未来的后台提取。

    如果您忽略此操作,操作系统可能会延迟将来的后台提取。

    一个很好用的例子是here

    更新:不调用此处理程序的后果可能包括完全终止您的应用程序。

    【讨论】:

    • 感谢您的回复。那么,我该如何决定是否需要传递 UIBackgroundFetchResult.NewData、NoData 或 Failed?
    • 如果您收到远程通知并且根据您的逻辑收到更新应用程序所需的内容,您可以发送 UIBackgroundFetchResult.NewData 如果收到通知但内容不可用(如果是通用的您的应用不支持的通知和内容)您可以发送 UIBackgroundFetchResult.NoData,如果在获取数据期间失败,您可以发送 UIBackgroundFetchResult.Failed 如果这些使您的应用在后台更高效,请正确使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多