LoginSignup
5
1

More than 5 years have passed since last update.

react-native-fcmでiOSのプッシュ通知がどうにも届かなかった問題

Last updated at Posted at 2017-11-08

ドはまりしたもんで調査手順残しておきたかったのでメモ
雑ですみません

問題

公式
https://github.com/evollu/react-native-fcm

や、この記事
https://qiita.com/mah_lab/items/a4eb922ac6d6a2d0cad3

を参考にiOSアプリケーションを設定。

その後、firebase consoleからメッセージ送信。
ステータスは「完了しました」になるが届かない。

通信経路おさらい

FirebaseConsole --(1)--> FCM --(2)--> APNs --(3)--> iOS

つかうサービスはFCMですがAPNs経由で端末に届きます。
ってことで順々に切り分けました。

(1)について

FirebaseConsoleではいけてるようにみえるので、
念のためTerminalからcurl使って検証


$ curl --header "Content-Type: application/json" \
--header "Authorization: key=ここにAPIkeyいれる" \
https://fcm.googleapis.com/fcm/send \
-d '{"notification": {"body": "Hello from curl via FCM!", "sound": "default"},
"priority": "high",
"to": "ここにFCMトークンをいれる"}'

APIkeyはFirebase consoleからコピー。
FCMトークンは、Xcodeのデバッガで


po [[FIRInstanceID instanceID] token]
po [[FIRMessaging messaging] FCMToken]

とかやるととれる。

結果:

{"multicast_id":8804927118733666407,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1511123702440988%f98f6759e98f6759"}]}

success=1だしエラーもないが、端末に届かない。

(2)について

APNs用の証明書の期限とか20回ぐらい確認。問題なし。

(3)について

これもTerminalからcurlで検証したかったがなんか上手く行かなかったのでこれを
インストール(git cloneで勝手にapplicationsに入ったとおもう)
https://github.com/noodlewerk/NWPusher

使い方はシンプルなので起動すればわかると思う。
APNs証明書とAPNsトークンを入力して送信するだけ。

APNsトークンのとり方はこれをAppDelegateとかに書いてdeviceTokenの中身みたら入ってる

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  //デバイストークン取得後の処理
}

結果:

ちゃんと端末に通知が届く

なんだぜんぜんわからん!!!

結局なんだったのか

もうね変なところ無いし明らかにおかしいよとおもったら
react-native-fcm@10.0.3が、
Firebase系podの新しめのバージョンに対応してませんでした。
(FirebaseCoreとかFirebaseUnstanceIDとか)

これ
https://github.com/evollu/react-native-fcm/issues/526

ということでFirebaseのpod群をダウングレード。
pod deintegrate して Podfile.lock書き換えて pod installで届くようになりました
上のスレッドではFirebaseInstanceIDだけ言及されていますが
僕はFirebaseCoreも4.0.6->4.0.0に落としたりしないとNGでした

最初からIssuesみればよかったよ!!!!

【参考】 うごいたときのPodfile.lock

PODS:
  - FirebaseAnalytics (4.0.0):
    - FirebaseCore (~> 4.0)
    - FirebaseInstanceID (~> 2.0)
    - GoogleToolboxForMac/NSData+zlib (~> 2.1)
  - FirebaseCore (4.0.0):
    - GoogleToolboxForMac/NSData+zlib (~> 2.1)
  - FirebaseInstanceID (2.0.0):
    - FirebaseCore (~> 4.0)
  - FirebaseMessaging (2.0.0):
    - FirebaseAnalytics (~> 4.0)
    - FirebaseCore (~> 4.0)
    - FirebaseInstanceID (~> 2.0)
    - GoogleToolboxForMac/Logger (~> 2.1)
    - Protobuf (~> 3.1)
  - GoogleToolboxForMac/Defines (2.1.1)
  - GoogleToolboxForMac/Logger (2.1.1):
    - GoogleToolboxForMac/Defines (= 2.1.1)
  - GoogleToolboxForMac/NSData+zlib (2.1.1):
    - GoogleToolboxForMac/Defines (= 2.1.1)
  - Protobuf (3.4.0)

参考文献

Google公式ブログのやつ。めちゃめちゃ役に立ちましたありがとうございます
https://developers-jp.googleblog.com/2017/02/debugging-firebase-cloud-messaging-on.html

5
1
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
5
1