プッシュ通知が届いた時のあれこれを調べた

ちょっと前にiOSでプッシュ通知周りの実装をしていて自分の理解が間違っていたのでメモ

プッシュ通知を受け取るメソッド

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

application.applicationStateについて

フォアグラウンドで起動中にプッシュ通知を受け取った場合

    UIApplicationStateActive

バックグラウンドで起動中にプッシュ通知を受け取った場合

    UIApplicationStateBackground

完全に落ちている状態でプッシュ通知を受け取った場合

メソッドはコールされない(恐らく検知不可)

プッシュ通知をクリックした時

    UIApplicationStateInactive

完全に落ちている状態からプッシュ通知で起動した場合

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

の中で下記のようにuserInfoが取得できるのでそこでハンドルする

     NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];