14
22

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 3 years have passed since last update.

Flutter + Firebase (FCM) でiOSのPush通知の実装

Last updated at Posted at 2020-05-27

Flutter + FCM (Firebase Cloud Messaging) でiOSのpush通知を実装したのでその際のメモ。

参考にしたドキュメント

基本はFlutterのFCMプラグインのドキュメント通りに進めればできる。
https://firebaseopensource.com/projects/firebaseextended/flutterfire/packages/firebase_messaging/readme/

Githubにexampleもある。
https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_messaging/example

こちらのDevelopers.IOの記事には具体的な実装例が書いてあって、参考になった。
https://dev.classmethod.jp/articles/flutter_fcm_push1/

デバッグ

自分の場合はドキュメント通りに進めても何故かPush通知が成功せず。。。
デバッグの仕方もわからず途方に暮れていたが、こちらのGoogle Developersのブログ「 iOS で Firebase Cloud Messaging をデバッグする」 が助けになった。

特に以下の2点によってデバッグが効率的に進んだ。
① 以下のコードをAppDelegate.mに追加してdeviceToken(FCM Tokenとは別物)を取得すること

func application(_ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  var readableToken: String = ""
  for i in 0..<deviceToken.count {
    readableToken += String(format: "%02.2hhx", deviceToken[i] as CVarArg)
  }
  print("Received an APNs device token: \(readableToken)")
}

② FCMを通さずに、①のdeviceTokenを用いて直接curlでAPNを叩くステップを挟むこと

> curl --http2 --cert ./証明書.pem \
-H "apns-topic: com.example.yourapp.bundleID" \
-d '{"aps":{"alert":"Hello from APNs!","sound":"default"}}' \
https://api.development.push.apple.com/3/device/デバイスID

補足

自分の場合はなぜかiPhoneを再起動しないとdeviceTokenが得られなかったので、同じように詰まっている人がいたら試してみてください。

14
22
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
14
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?