1

こんにちは、私はAppleAPNSを使用してRemoteNotificationを送信しています。私が見つけた問題は次のとおりです。

まず、RemoteNotificationを受信して​​から、メインページ(最初のページ)ではなく、他のページにジャンプします。私のコード:

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

    NSLog(@"remote notification: %@",[userInfo description]);
    NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

    NSString *alert = [apsInfo objectForKey:@"alert"];
    NSLog(@"Received Push Alert: %@", alert);
    NSString *sound = [apsInfo objectForKey:@"sound"];
    NSLog(@"Received Push Sound: %@", sound);
    NSString *badge = [apsInfo objectForKey:@"badge"];
    NSLog(@"Received Push Badge: %@", badge);

    application.applicationIconBadgeNumber = [[apsInfo objectForKey:@"badge"] integerValue];


    if ([userInfo objectForKey:@"type"])
    {

        NSString *nsType = [userInfo objectForKey:@"type"];
        NSLog(@"Received Push nsType: %@", nsType);
        if([[userInfo objectForKey:@"type"] intValue]==1){//chat
             [self JumpChatHistoryView];


        }else{
            [self JumpMessageDetailView];
        }
    }
    application.applicationIconBadgeNumber = 0; 
}

私のアプリはバックグラウンドに入り、システムによって強制終了されません。RemoteNotificationを受信して​​クリックすると、コードはOKで、他のビューにジャンプできます。しかし、アプリを強制終了したとき、RemoteNotificationを受け取ったときにクリックすると、他のビューはスキップされず、メインビューに入るだけで、解決方法がわかります。

さらに、LocalNotificationをキャンセルすると使用できます[[UIApplication sharedApplication] cancelLocalNotification:notification]; が、RemoteNotificationでは同じメソッドが見つかりません。どうすればいいですか?

4

2 に答える 2

1

このメソッドでは、AppDelegate.mファイルにコードを記述する必要があります。

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{
           NSLog(@"%@", userInfo);
           NSString *notiText = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
           [self JumpChatHistoryView];
}
于 2012-12-11T09:57:15.680 に答える
0

私は私の質問に答えることができます1:

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


 NSDictionary *userInfo =[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if ([userInfo objectForKey:@"type"])
{

    NSString *nsType = [userInfo objectForKey:@"type"];
    NSLog(@"Received Push nsType: %@", nsType);
    if([[userInfo objectForKey:@"type"] intValue]==1){//chat
        [self JumpChatHistoryView];


    }else{
        [self JumpMessageDetailView];
    }
}

質問2の場合、それ自体をキャンセルできる場合もあれば、そうでない場合もあります

于 2012-12-11T10:14:04.733 に答える