77

Androidアプリ用のプッシュサービスを作成しようとしています。この問題については、GoogleGCMのドキュメントと例に従います。

Androidアプリを登録/登録解除できます。サーバー側からは、1つのサブスクリプションが登録されていることがわかりますが、サーバーからAndroidアプリにメッセージを送信しようとすると、常に次のエラーが発生します。

デバイス#0へのメッセージ送信エラー:MismatchSenderId

私のAndroidアプリでは、SENDER_ID=200000000001を使用しています。

そして、Googleが言うように、サーバー側ではAPI_KEY =AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxsを使用します

私はこの文書に従いました:

http://developer.android.com/guide/google/gcm/demo.html

Google APIパネルでもGCMを有効にしましたが、迷惑なエラーメッセージが表示されます。

この問題を解決するにはどうすればよいですか?

4

11 に答える 11

68

サーバーは、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ロック付き)」に属していることを確認してください

于 2012-07-03T15:07:29.440 に答える
24

数値IDを使用しない場合、不一致が発生します。プロジェクトIDはSENDERIDではありません!! これを理解するのに9時間かかりました。グーグルによって作成されたすべての混乱については、数値IDを取得するために次のリンクを確認してください。

https://console.cloud.google.com

それ以外の

https://console.developers.google.com

それが役に立てば幸い!!

更新:-状況は再び変化しました。これで、送信者IDはfirebaseになります。

https://console.firebase.google.comにアクセスして、プロジェクトを選択します。[設定]->[クラウドメッセージング]で、送信者IDを確認できます。

そしてそれは動作します!

于 2016-04-08T06:15:44.743 に答える
7

ターミナルで以下のスクリプトを実行してください

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

成功または失敗した場合にメッセージを表示します

于 2015-12-24T06:01:25.133 に答える
4

最近同じ問題が発生し、プロジェクトIDに基づいて「gcm_sender_id」に異なる値を試しました。ただし、「gcm_sender_id」の値は「プロジェクト番号」に設定する必要があります。

この値は、[メニュー]>[IAMと管理]>[設定]にあります。

スクリーンショットを参照してください:GCMプロジェクト番号

于 2016-06-14T08:01:17.427 に答える
3

これは、 サーバーキーと送信者IDパラメーターのHTTPリクエストが互いに一致しない場合に発生します。基本的に、サーバーIDとサーバーキーの両方が同じFirebaseプロジェクトに属している必要があります。下の画像を参照してください。異なるFirebaseプロジェクトからこれらのパラメータを混在させると、エラーMismatchSenderIdが発生します ここに画像の説明を入力してください

于 2018-11-16T10:31:16.053 に答える
2
InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope)

authorizedEntityはサーバーのプロジェクト番号です

于 2016-08-11T23:55:54.117 に答える
2

Androidアプリは12桁の番号ID(別名GCMプロジェクト番号)を修正する必要があります。この12桁の数字が正しくない場合は、このエラーも発生します。

この12桁の番号は、GooglePlayコンソールの特定のアプリ「サービスとAPI」->「リンクされた送信者ID」にあります。

于 2016-11-02T14:11:07.317 に答える
0

Androidプロジェクトのフォルダ内のgoogle-services.jsonファイルを確認してください。appよくわからない場合は、Firebaseコンソールから新しいものを生成してください。このエラーは2つの場合に発生しました。

  1. google-services.jsonテストアプリケーション(正しいファイルが含まれている)でテストFirebaseプロジェクトを使用しました。次に、プッシュ通知を別のアプリケーションに送信しようとしましたが、このエラーが発生しました('"error": "MismatchSenderId"')。2番目のアプリケーションが異なるFirebaseプロジェクトにバインドされていることを理解しましたgoogle-services.json。サーバーキーが異なるため、リクエストを書き直す必要があります。

  2. テストFirebaseプロジェクトを実際のgoogle-services.jsonに置き換えたかったので、アプリケーションを変更しました。正しいファイルを生成し、リクエストを変更しましたが、このエラーが発生し続けました。翌日、それは自動的に修正されました。Firebaseが同期的に更新されないのではないかと思います。google-services.json

リクエストのサーバーキーを取得するには、https://console.firebase.google.comを開き、適切なプロジェクトを選択します。

ここに画像の説明を入力してください

次に、それをリクエストに貼り付けます。

ここに画像の説明を入力してください

于 2019-09-04T09:29:35.010 に答える
0

GCMの廃止とAPIの削除により、2019年5月29日以降にGCMを使用しようとすると、MismatchSenderIdが表示される可能性があります。詳細については、GoogleGCMおよびFCMFAQを参照してください。

于 2020-06-01T22:19:18.463 に答える
-1

代わりに、http: //developers.google.comで生成されたSender IDとAPIキーを使用してください(最初にGoogle Cloud Messagingを参照し、指示に従ってください)。

于 2016-03-06T10:17:45.593 に答える
-1

ネイティブAndroidで使用する場合は、AndroidMaifest.xmlファイルを確認してください。

<meta-data
        android:name="onesignal_google_project_number"
        android:value="str:1234567890" />  
  <!--             its is correct. -->

代わりは

   <meta-data
        android:name="onesignal_google_project_number"
        android:value="@string/google_project_number" />

それが役に立てば幸い!!

于 2016-04-21T21:49:24.923 に答える