2012-09-11 42 views
0

我已經申請時的通知是後臺;

- (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 
    ... 
} 

現在是可能的,我執行一些一些套動作的時候通知到達時,保持在後臺的應用;我不想在收到通知時將應用程序放在前臺;我想要的是,當通知到達時,我只是設置一些標誌(應用程序仍在後臺),當用戶自己打開應用程序時,他/她可以以優雅的方式查看消息;總結:我不想在通知到達時將應用程序置於前臺,但想在代碼中執行一些操作,將應用程序保留在後臺;

謝謝;

+0

這是不可能啓動一個後臺任務的同時在後臺。只有幾件事可以在iOS的後臺運行。像:GPS跟蹤和聲音播放。這些規則對於後臺任務非常嚴格。 –

回答

1

你將要使用

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

由於您的應用程序是不會了解收到的通知任何背景。通知由iOS處理。

然而,當你的應用程序打開,由於用戶刷卡/敲擊通知您的應用程序將得到launchOptions在上面的方法傳遞。如果用戶直接打開應用程序(點擊應用程序圖標),launchOptions將爲空。有關更多詳細信息,請參見UIApplicationDelegate Protocol Reference

要獲取遠程通知有效載荷,你可以這樣做:

[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey] 

本地通知有效載荷,你可以這樣做:

[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]