ドはまりしたもんで調査手順残しておきたかったのでメモ
雑ですみません
問題
公式
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