2015-07-13 20 views
0

當我使用iOS 8的執行後臺代碼和我調度UILocalNotification爲變通這樣的事實,我不能執行後臺代碼除非有限的時間量或該應用程序屬於某些類別(如與外部BLE配件等通信。但即便如此,它會被限制在代碼):獲取該應用接收UILocalNotification

Background execution documentation here):

如果您的應用程序是在中間的任務,並需要一點額外的時間 要完成該任務,可以調用 beginBackgroundTaskWithName:expirationHandler:或 beginBackgroundTaskWithExpirationHandler:UIApplication 對象的方法請求一些額外的執行時間。

我想實現的是檢查是否有一些是在其中UILocalNotification觸發時符合條件(使用本地通知,似乎只有這樣,才能讓應用程序來執行的東西,而在背景..)。 除非有另一種方式..

不幸的是我似乎能夠攔截呼叫,只有當應用程序進入前臺執行代碼(用戶點擊此通知徽章和** ** didReceiveLocalNotification被調用。

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 

這對應於通過Apple here所述的行爲。

用戶敲擊在警報或抽頭(或點擊) 應用圖標的默認按鈕。如果輕擊默認操作按鈕(在運行iOS的設備上),系統啓動應用程序,應用程序調用其應用程序:didFinishLaunchingWithOptions:方法,傳入 通知負載(用於遠程通知)或 local-通知對象(用於本地通知)。儘管 應用程序:didFinishLaunchingWithOptions:不是 處理通知的最佳位置,但在此時獲取有效負載將使您 有機會在調用處理程序方法 之前啓動更新過程。

有關如何在應用程序處於後臺時攔截UILocalNotification並執行某些代碼而無需用戶點擊通知的任何想法?

回答

1

您不能使用本地通知本身的觸發來在後臺啓動您的應用程序。如您所知,您的應用只在用戶點擊通知時執行。

您可以使用帶有內容可用密鑰的遠程通知在後臺啓動應用程序。

相關問題