2011-05-19 19 views
4

我知道這個話題已經討論過,但是我不斷看到相互衝突的腳步,而我只是越來越迷失。在不同的狀態下接收推送通知

我只想知道當我的應用程序在後臺並收到推送通知時會發生什麼。

我知道:

而在前臺 - 應用:didReceiveRemoteNotification:被稱爲並沒有警覺,徽章或聲音。

雖然未啓動 - 顯示/播放警報,徽章和/或聲音,如果用戶點擊通知的「查看/打開」(動作)按鈕,應用程序啓動並調用application:didFinishLaunchingWithOptions:並傳遞通知有效內容,如果用戶關閉通知並點擊應用程序圖標,則會調用相同的方法,但不會傳遞有關通知的信息。

而在後臺 - 這裏是我混淆的地方。我需要知道在後臺運行或暫停是否會產生影響,並且在任何情況下調用什麼方法以及是否顯示/播放警報,徽章和/或聲音。

謝謝。

回答

5

您可能會感興趣this answerHow to respond to push notification view if app is already running in the background有用。

基本上,你可以告訴你的應用是否剛剛被推上前臺或者不申請:didReceiveRemoteNotification:使用這段代碼:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    if (application.applicationState == UIApplicationStateActive) 
     // app was already in the foreground 
    else 
     // app was just brought from background to foreground 
    ... 
}