2012-08-12 29 views
4

我有一個推送通知,我正在向用戶發送,我希望能夠在用戶點擊時執行操作。我知道,如果應用程序是在前臺,後臺,或者如果用戶點擊從通知中心提醒,下列方法在應用代表呼籲:選擇推送通知標題時調用的方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

但是,如果應用程序是不是啓動並且用戶在通知到達時輕按通知橫幅,此方法似乎不會被調用。他們是否需要在這種情況下實施不同的方法?他們的其他案例也應該採用其他方法嗎?

回答

4

如果您在點擊通知標題時未啓動應用程序,那麼您將在您的application:didFinishLaunchingWithOptions:中收到一個NSDictionary。

然後,你可以做這樣的事情:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSDictionary *pushDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
    if(pushDict) 
    { 
    [self application:application didReceiveRemoteNotification:pushDict]; 
    } 
} 

此外,在application:didReceiveRemoteNtification:方法,你可以測試你的應用程序是在收到通知的時間不活動,像這樣:

-(void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    if([app applicationState] == UIApplicationStateInactive) 
    { 
    NSLog(@"Received notifications while inactive."); 
    } 
    else 
    { 
    NSLog(@"Received notifications while active."); 
    } 
+0

didFinishLaunchingWithOptions中的部分是我所錯過的 - 謝謝! – lehn0058 2012-08-13 00:57:13