Androidアプリ用のプッシュサービスを作成しようとしています。この問題については、Google GCMのドキュメントと例に従います。
Androidアプリを登録/登録解除できます。サーバー側から、1つのサブスクリプションが登録されていることがわかりますが、サーバーからAndroidアプリにメッセージを送信しようとすると、常に次のエラーが表示されます。
デバイス#0へのメッセージ送信エラー:MismatchSenderId
Androidアプリでは、SENDER_ID = 200000000001を使用します。
GoogleがAPI_KEY = AIzxxxxxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxsを使用していると言っているように、サーバー側で
私はこの文書に従いました:
Google APIパネルでもGCMを有効にしましたが、その迷惑なエラーメッセージが表示されます。
この問題を修正するにはどうすればよいですか?
サーバーは、GCMサーバーからアプリに返された新しい登録IDを使用しましたか?古いC2DMサーバーから提供された登録IDにメッセージを送信しようとすると、この問題が発生しました。
また、Sender IDとAPI_KEYを再確認してください。一致する必要があります。一致しない場合、MismatchSenderIdエラーが発生します。 Google APIコンソールで、プロジェクトのURLを確認します。
https://code.google.com/apis/console/#project:xxxxxxxxxxx
XxxxxxxxxはプロジェクトIDであり、これは送信者IDです。
APIキーが「サーバーアプリのキー(IPロック付き)」に属していることを確認します
数値IDを使用しないと、不一致が発生します。プロジェクトID IS NOT SENDER ID !!これを理解するのに9時間かかりました。 Googleが作成したすべての混乱については、次のリンクをチェックして数値IDを取得してください。
https://console.cloud.google.com
の代わりに
https://console.developers.google.com
それが役に立てば幸い!!
更新:-物事が再び変更されました。現在、送信者IDはfirebaseを使用しています。
https://console.firebase.google.com に移動して、プロジェクトを選択します。 [設定]-> [クラウドメッセージング]で、送信者IDを見つけることができます。
そしてそれは動作します!
ターミナルで以下のスクリプトを実行してください
curl -X POST \
-H "Authorization: key= write here api_key" \
-H "Content-Type: application/json" \
-d '{
"registration_ids": [
"write here reg_id generated by gcm"
],
"data": {
"message": "Manual Push notification from Rajkumar"
},
"priority": "high"
}' \
https://Android.googleapis.com/gcm/send
成功または失敗した場合、メッセージが表示されます
最近同じ問題に遭遇し、プロジェクトIDに基づいて「gcm_sender_id」に異なる値を試しました。ただし、「gcm_sender_id」値は「プロジェクト番号」に設定する必要があります。
この値は、[メニュー]> [IAMと管理者]> [設定]で確認できます。
スクリーンショットを参照してください: GCMプロジェクト番号
Androidアプリは、12桁の番号ID(GCMプロジェクト番号)を修正する必要があります。この12桁の番号が正しくない場合、このエラーも発生します。
この12桁の番号は、Google Playコンソールの特定のアプリ「サービスとAPI」->「リンクされた送信者ID」の下にあります
InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope)
authorizedEntityはサーバーのプロジェクト番号です