0

我已經爲我的iOS應用程序實現了遠程推送通知。它有一個自定義的有效載荷。像這樣的如何在iOS中的applaunchwithoption中讀取有效載荷?

"aps": { 
    "alert": "joetheman", 
    "sound": "default" 
}, 
"message": "Some custom message for your app", 
"id": 1234 

當點擊鎖定屏幕上的通知,根據ID我想應用程序的負載不同的屏幕(當應用程序沒有運行,如果我有一個通知和ID爲2,應用程序應打開並打開BookingViewController)。那麼我如何才能讀取我的applaunchwithOption中的AppDelegate以及notificationdidreceived代表中的自定義有效載荷。

請幫幫我。由於

回答

3

你可以用下面的方法來韓德爾PUSH通知:---

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

{ 
    NSLog(@"%@",userInfo); 
    NSString *msg=[userInfo objectForKey:@"message"]; 
    //Application is Running 
    if (application.applicationState == UIApplicationStateActive){ 

     if ([[userInfo objectForKey:@"id"]isEqualToString:@"1"]) { 

     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     YourViewController *obj = [[YourViewController alloc]initWithNibName:@"YourViewController" bundle:nil]; 

     nav = [[UINavigationController alloc]initWithRootViewController:obj]; 
     [self.nav setNavigationBarHidden:YES]; 
     self.window.rootViewController = nav; 
     [self.window makeKeyAndVisible]; 

     } 
     else if ([[userInfo objectForKey:@"id"]isEqualToString:@"2"]) {     
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     YourViewController *obj = [[YourViewController alloc]initWithNibName:@"YourViewController" bundle:nil]; 

     nav = [[UINavigationController alloc]initWithRootViewController:obj]; 
     [self.nav setNavigationBarHidden:YES]; 
     self.window.rootViewController = nav; 
     [self.window makeKeyAndVisible]; 

     } 
    } 
//when Application in Background 
    else{ 
     if ([[userInfo objectForKey:@"id"]isEqualToString:@"1"]) { 

     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     YourViewController *obj = [[YourViewController alloc]initWithNibName:@"YourViewController" bundle:nil]; 

     nav = [[UINavigationController alloc]initWithRootViewController:obj]; 
     [self.nav setNavigationBarHidden:YES]; 
     self.window.rootViewController = nav; 
     [self.window makeKeyAndVisible]; 

     } 

     else if ([[userInfo objectForKey:@"id"]isEqualToString:@"2"]) { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     YourViewController *obj = [[YourViewController alloc]initWithNibName:@"YourViewController" bundle:nil]; 

     nav = [[UINavigationController alloc]initWithRootViewController:obj]; 
     [self.nav setNavigationBarHidden:YES]; 
     self.window.rootViewController = nav; 
     [self.window makeKeyAndVisible]; 

     }    
    } 
} 
+0

然後,如果應用程序沒有在後臺乳寧和用戶如果仍然收到了通知其下委託我處理它。 (用戶在他第一次打開應用程序之前收到通知,在這種情況下,因爲我知道applicationddlalaunchwithoption會在此代理下觸發如何執行此操作) – user1960169

+0

是的,您是對的在這種情況下,您需要通過applicationdidlaunchwithoption –

+0

來處理您的應用程序我可以在applicationdidlaunchwithoption中訪問我的有效載荷嗎? – user1960169