1

アクションの前にアプリが起動されたことを考慮して、ユーザーが通知センターからアプリを開いたときにビューにリダイレクトする方法はありますか。(アプリはバックグラウンドで実行中です)

例、普通にアプリを起動し、ホームボタンを押します。その後、多数のリモート通知を受け取り、そのプッシュ通知からどこでもアプリを開きました。

アプリの任意の部分にリダイレクトできるさまざまなプッシュ通知があるためです。リダイレクトが機能するだけでなく、

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

アプリケーションがアクティブになっている間、リモート通知 (内部の json データ) に引き続きアクセスできる可能性はありますか? リダイレクトを行うことができるように。また、ユーザーが中央にあるリモート通知を実行できるように、ユーザーがタップした通知に応じて適切なビューにリダイレクトされます。

アップデート

別の例:
(1) ユーザーは 2 つのプッシュ通知を受け取りますapplication: didReceiveRemoteNotification:
(2) ユーザーは最初のプッシュ通知でリダイレクトされます。
(3) ユーザーは自分の通知センターに移動します
(4) 他の通知をタップします。彼はまだリダイレクトされますか?アプリがどちらにも入らないとは思わapplication:didReceiveRemoteNotification:ないapplication: didFinishLaunchingWithOptions:

4

3 に答える 3

4

はい、できます。ここに簡単な概要/サンプルがあります

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
 {
      //When notification is pressed on background it will enter here

      //Get strings based on information on your json payload for example
      if([[userInfo objectForKey:@"keyword"] isEqualToString:@"value"]){
           //redirect/push a screen here for example
      }
 }
于 2012-10-23T10:39:19.687 に答える
4

DIDReceiveRemoteNotification メソッドに関連付けられたユーザー情報があります...次のデリゲート メソッドを使用できます。

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary* userInfo =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (userInfo) {
        [self processRemoteNotification:userInfo];
    }
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    return YES;
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [self processRemoteNotification:userInfo];
}

その後、ユーザー情報に APS というキーがあり、次の方法でそれを使用できます。

NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

その後、APNS のペイロードからすべての要素を取得し、どのビューにリダイレクトするかを決定できます。

于 2012-10-23T10:31:07.580 に答える
1

はい、できます。

リモート通知を受け取ると、次のデリゲート メソッドが呼び出されます。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
于 2012-10-23T10:25:33.967 に答える