質問: FireBase Cloud Messaging (FCM) FireBaseが用意しているWeb上の送信画面でFCMを送信しようとしていますが送信できません。 Webの画面上で「メッセージ送信エラー」と表示され、ブラウザのデバッグコンソールで確認すると ``` { "error": { "code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT" } } ``` というレスポンスが返ってきていることが確認できます。 ●**ターゲットには トピック を指定**しており、 このトピックに指定する値はFireBaseに登録済みであることを確認しています。 FirebaseMessaging.getInstance().subscribeToTopic("xxxx"); でトピックを追加し、FCMのWeb画面で↑のxxxxが入力候補として表示されるため登録は問題なく行われているみたいです。 ●**試しにターゲットを ユーザーセグメント にすると送信は成功**します。 端末にも届きます。 ●**該当のトピック xxxx を購読している端末は存在します。** ↑のtokenが存在しない時のエラーとレスポンスが一緒のため、 トピックの購読をONにしている端末を用意しています。 また、端末のログでFireBaseに購読有効が正常同期されていることも確認済みです。 ●**送信だけでなく、下書き保存もできません** Webの送信画面から下書き保存を行うこともできません。 Webの画面上で「メッセージ保存エラー」と表示され、ブラウザのデバッグコンソールで確認すると ``` { "error": { "code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT" } } ``` という送信時と同じエラーが発生しているようです。 ●**トピック名は使用していい文字だけを使っている** ``` [a-zA-Z0-9-_.~%]+ ``` 実際には 小文字英字 と ドット だけを使用しており、文字数は30文字程度 試しに小文字英字5文字だけでも試したけど同じくエラーになる。 こちらの問題の解決策をご存知でしたらお願いいたします。
回答: Googleにお問い合わせしました。 Firebase内のプロジェクトが多すぎるとのことでした。 (75ほど存在してました) ちなみにですが、FirebaseのWebからトピック指定で送信した場合でも 対象となるアプリIDをリスト化してGoogleに送信しているみたいでした。 Web上から見るとトピックを指定すると全アプリが対象になっている風に見えますが、 実際は内部で「これとこれとこれ(全アプリのID列挙)を対象にこのトピックを送信!」となっているみたいです。 追記です。 以前Googleにお問い合わせしたときは上記回答で修正してくれなかったのですが、 FCMで新たなバグを発見しGoogleに報告したところこのバグも同時に修正されました。 現在はこの現象は起こらないはずです。 (新たなバグとはFCMでアプリ一つだけ指定したのに指定していない複数のアプリにも通知が届くバグ この問題もプロジェクトがあまりにも多いことが原因 Googleに12月お問い合わせし、2月初旬に解決)