![見出し画像](https://assets.st-note.com/production/uploads/images/14307387/rectangle_large_type_2_f8417c3e028a727e62ba6c3416c90847.jpeg?width=1200)
Firebase Cloud Messaging のトピックの Subscribe、UnSubscribeができない
Firebase Cloud Messaging (以下FCM)ではトピックというものがあります。これは iOS・Android のプッシュ通知では受信する側は受信するだけで取捨選択できない(通知に含まれるデータを用いることである程度は取捨選択可能)のに対し、あるカテゴリーのプッシュだけ受信したいみたいなケースで使用できるものです。
基本的にはドキュメント通りに設定すれば特に難しいことはないと思います。たぶん…。
何が問題だったか?
iOS で「あるトピックを受信するよ〜」と設定する SubscribeToTopic と「そのトピックの受信やめるよ〜」と設定する UnSubscribeToTopic の完了イベントが返ってこない事態に遭遇しました…。具体的なログは以下です。これは設定完了ともエラーとも判断されないです。
The subscription operation is suspended because you don't have a token. The operation will resume once you get an FCM token
開発環境
遭遇した開発環境としては Unity でのアプリ開発でプッシュ通知を実装するときに Unity の Firebase パッケージとネイティブ側(iOS・Android)の Firebase SDK が共存していました。
解決した方法
Unity の Firebase パッケージを取り除きましたw
原因考察
正直、ハッキリとは分かっていないのですが Unity の Firebase のパッケージによる初期化とネイティブ側での初期化により、デバイストークンが意図しないものになっていたような気がします。もう少しログを眺めると以下のように初期化が多重で実行されていたようなので、これが原因なんじゃないかと考えています。
Default app is already present, deleting the existing default app and recreating
Unity 側では Firebase の処理をいじることができなかったので、とりあえずUnity側 の初期化を実行させないためにパッケージを取り除きました。同じ境遇でお困りの方へ、参考になれば幸いです。
参考
・Firebase: Is mixing C++ and Objective-C SDK ok?
この記事が気に入ったらサポートをしてみませんか?