UIApplicationDelegateの
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler
基本的にはこのメソッドのイベントが発生する
しかし、これだけではアプリがフォアグラウンドになっていると通知バナーがでない(メソッドは実行される)
フォアグラウンド対策のために
UNUserNotificationCenterDelegateの
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
これを実装すると
フォアグラウンド時は上記が呼ばれ、最初のメソッドは実行されなくなる
バックグラウンド時は最初のメソッドが実行される
んだけどもあわせて
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
これを実装していると、最初に説明したメソッドが一切処理されなくなる
気をつけよう
この記事へのコメント