2012-09-19 53 views
2

我試圖處理所有可能的情況下,與遠程通知。 我很好,當在前臺的應用程序 - didReceiveRemoteNotification被調用。 問題是當應用程序在後臺狀態,並且我收到推送通知。 什麼都不叫。 如何讓應用程序回到前臺時讓用戶知道他有新的遠程通知?的iOS:處理遠程(推送)通知

回答

6

爲你截取的推送通知的唯一方法是,當用戶點擊在通知中心(或當滑動從鎖定屏幕應用程序圖標)的通知。

在這種情況下,應用前景走在應用程序委託didFinishLaunchingWithOptions方法之前被調用。您應該使用NSDictionarylaunchOptions來確定應用是否已經從通知中心或通過點擊圖標(正常使用)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSDictionary *pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]; 
    if (pushDic != nil) { 
     NSLog(@"Notification"); 
    } 
    else { 

    } 
} 
+5

的UIApplicationLaunchOptionsRemoteNotificationKey實際上是一個定義的常量不是字符串值 – Stas

+0

您好,我有一個類似的情況,但稍微修整所需要的,但像當我得到推送通知,應用程序將獲得活躍在後臺做給出了任務, - ( void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo,但是我的應用程序在用戶點擊通知之前不會激活。那麼,如何在應用程序處於後臺時完成此操作?劑量誰知道這個解決方案? – Moxarth

-3

隨便看看進入編程指南:

如果操作按鈕被竊聽(運行iOS的設備上),系統啓動應用程序和應用程序調用其委託的application:didFinishLaunchingWithOptions:方法中(如果實現);它傳入通知有效內容(用於遠程通知)或本地通知對象(用於本地通知)。

+0

應用中:didFinishLaunchingWithOptions稱爲只有當應用程序是死了...... – Jim

+0

的文件說,這是處理如果應用程序沒有在前臺運行,沒有「死」與背景之間進行區分。 – Tom

+0

'用戶啓動應用程序以響應遠程通知的到來。在這種情況下,該字典包含application:didReceiveRemoteNotification:方法中描述的通知有效載荷字典。 (註釋:UIApplicationLaunchOptionsRemoteNotificationKey)' – ohr

-3

當然,如果你的應用程序在後臺,會有什麼所謂的啓動。 ..

如果您的應用程序沒有啓動(即使不懸浮在後臺),該

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

將包含該通知的有效載荷(關鍵UIApplicationLaunchOptionsRemoteNotificationKey):

NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; 
+2

如果是在後臺 - (空)應用程序:(UIApplication的*)應用程序didReceiveRemoteNotification:(NSDictionary的*)用戶信息被調用。 – Sabobin