2015-10-27 105 views
1

請您在函數接收到遠程通知時告訴我用fetchCompletionHandler最佳實踐:APNS在iOS應用程序

 

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

我看到人們通常在上面的函數的末尾寫這樣的代碼:

 
completionHandler(UIBackgroundFetchResultNewData); 

如果我寫:

 
completionHandler(UIBackgroundFetchResultNoData); 

還是什麼,甚至發生當我不把上面的代碼?

注:我使用xcode7.1,Objective-C中,ios9.1

回答

1
  • UIBackgroundFetchResult.NewData - 當新的內容被取出,並且應用程序已被更新時調用。
  • UIBackgroundFetchResult.NoData - 當新內容的提取已經過去但沒有內容可用時調用。
  • UIBackgroundFetchResult.Failed - 用於錯誤處理,當抓取無法通過時調用此方法。

你必須調用它才能讓iOS知道你的背景獲取結果是什麼。它使用這些信息來安排未來的後臺提取。

如果你忽視這樣做,未來的背景提取可能會被操作系統延遲。

一個很好用的例子是here

更新:不調用此處理程序的後果可能包括完全終止您的應用程序。

+0

感謝您的回覆。那麼,我該如何決定是否需要傳遞UIBackgroundFetchResult.NewData,NoData或Failed? – chipbk10

+1

如果您收到遠程通知並根據您的邏輯收到了更新應用程序所需的內容,則可以發送UIBackgroundFetchResult.NewData 如果收到通知並且內容不可用(如果通用通知和內容不受支持通過您的應用程序),您可以發送UIBackgroundFetchResult.NoData ,如果數據的獲取過程中發生故障,您可以發送UIBackgroundFetchResult.Failed 正確使用,如果這些讓你的應用程序在後臺更高效。 –

+0

如果我的答案解決了您的問題,請接受它 –

相關問題