8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Firebase Push通知 iOS] アプリバックグラウンド時に didreceiveRemoteNotification が呼ばれない

Last updated at Posted at 2017-12-30

#はじめに

FirebaseのPush通知を実装する際に、少しはまってしまい、記事にもそこまでされてなかったようなのでメモ程度に書きます。

#内容
アプリのバックグラウンド時に、push通知を受けた時に、以下のメソッドを呼び出そうとしたのですが呼べませんでした。

AppDelegate.swift
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    switch application.applicationState {
    case .inactive:
         print(userInfo)
    case .active:
         print(userInfo)
    case .background:
         print(userInfo)
    }
}

push通知は受信できるのですが、didReceiveRemoteNotificationメソッドが呼ばれず、
アプリがアクティブな時は上記のメソッドを呼べました。

#解決方法
Firebase Cloud Messaging の HTTP プロトコル
こちらの記事を参考に解決しました。

push通知を送信する際に、送信側でリクエストボディに

 "content_available" : true

を追加しておく必要があるようで、デフォルトではアプリがバックグラウンドにある場合、アプリがスリープ状態にあります。上記のキーバリューを送信してあげないと、スリープ状態のままなのでアプリバックグラウンド時にdidreceiveremotenotificationが呼ばれません。

※ Firebaseドキュメントの引用
スクリーンショット 2017-12-30 9.23.38.png

push通知自体はきているのでクライアント側で制御できるものかと思っていたんですが、送信側も意識する必要があるみたいだったので、忘れないうちに書きました。

何かアドバイスや不足点などありましたら、コメントいただければ幸いです。m(_ _)m

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?