プッシュ通知からアプリを起動した際にポップアップを表示する

プッシュ通知からアプリを起動した際に、ポップアップを表示する方法のご紹介です。

プッシュ通知からアプリを起動した場合、UIApplicationDelegateの実装クラスの、application:didFinishLaunchingWithOptions:メソッドのlaunchOptionsからプッシュ通知の内容を取得することができます。

特にプッシュ通知の内容は、UIApplicationLaunchOptionsRemoteNotificationKeyのキーに格納されているので、これを取得して表示することができます。

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // ...(略)...
    NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    [self showMessageWithRemoteNotification:userInfo];
    return YES;
}

アプリが新規に起動された場合ではなく、バックグラウンドまたはフォアグラウンドにアプリプロセスが残っている場合は、application:didFinishLaunchingWithOptions:メソッドに呼ばれず、application:didReceiveRemoteNotification:メソッドが呼び出されます。

ここで同様に引数に渡されるuserInfoの値より、プッシュ通知のメッセージなどを表示することができます。

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

表示の方法はアプリの実装に依存しますが、UIAlertViewを使って簡易に表示する例をご紹介します。

- (void) showMessageWithRemoteNotification:(NSDictionary *)userInfo {
    NSString *message = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"];
    if(message) {
        [[[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
    }
}

ここでプッシュ通知のメッセージは、apsキーの中の、alertキーの値として保持されます。

これによって、プッシュ通知から起動した際に、次のようにポップアップを表示することができます。