2014-03-26 52 views
1

通過點擊通知獲取推送通知並打開應用後,在didFinishLaunchWithOptions中接收nil的可能原因是什麼?我已經仔細檢查過該應用已停止,而不僅僅是在後臺。而且nil仍然總是寫入日誌。爲什麼launchOptions在收到推送通知後爲零?

我沒有做什麼特別的東西在我的didFinishLaunchWithOptions,下面的代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [MA init]; 
    NSLog(@"%@", launchOptions); 
    if (!launchOptions) { 
     return YES; 
    } 
    id userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; 

    if (userInfo[@"aps"] && userInfo[@"id"]) { 
     MAResult* result = [[MA data] resultById:userInfo[@"id"]]; 
     if (result) { 
      [((UINavigationController *)self.window.rootViewController) pushViewController:[[MATaskDetails alloc] initWithResults:result] animated:YES]; 
     } 
    } 

    return YES; 
} 
+1

你有什麼有效載荷? – null

回答

-1

如果應用程序在前臺模式則通過application:didReceiveRemoteNotification:

接收推送通知,但如果應用程序是不是在前臺模式推送通知傳遞給application:didFinishLaunchingWithOptions:

所以我相信你應用程式在前臺模式和application:didFinishLaunchingWithOptions: 不是C完全一致。

0

您可以didReceiveRemoteNotification委託方法嘗試

- (void)application:(UIApplication *)application 
    didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
[MA init]; 
    NSLog(@"%@", Received Notification); 
    if (userInfo[@"aps"] && userInfo[@"id"]) { 
     MAResult* result = [[MA data] resultById:userInfo[@"id"]]; 
     if (result) { 
      [((UINavigationController *)self.window.rootViewController) pushViewController:[[MATaskDetails alloc] initWithResults:result] animated:YES]; 
     } 
    } 
    } 

希望它可以幫助你......!