8

GCM プッシュ通知の問題に直面しています。次のエラーが表示されます。

{
  "multicast_id":4630467710672911593,
  "success":0,
  "failure":1,
  "canonical_ids":0,
  "results":[{
      "error":"MismatchSenderId"
  }]
}

以下はコードです。どんな助けでも本当に感謝しています。前もって感謝します。

public function gcmPush() 
{
    $regId = "APA91bHFcgOssQZEqtdUk3EC1ojwC5-LVG3NPV2bMqKyC9rPymR6StmAbz-N7Ss8fnvruZhWWNrR3lmBqpjQItlu00AKHPbltBclUJF-EfC5qG4CF2xiuYYC0NCf8u5rbiYFk8ARhIT4lY2AEPWzGpl1OtTvQEC0gA"; 
    $registatoin_ids = array($regId); 
    $message = array("msg" => 12345); 

    $this->send_notification($registatoin_ids, $message);
}

public function send_notification($registatoin_ids, $message) 
{
  // Set POST variables
  $url = 'https://android.googleapis.com/gcm/send';         
  define('GOOGLE_API_KEY', 'AIzaSyBavsIgQKo1Nf9wKZ5o_fGvE_6MI52LFR0');
  $fields = array(
    'registration_ids' => $registatoin_ids,
    'data' => $message,
  );
  $headers = array(
   'Authorization: key=' . GOOGLE_API_KEY,
   'Content-Type: application/json'
  );

  // Open connection
  $ch = curl_init();

  // Set the url, number of POST vars, POST data
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  // Disabling SSL Certificate support temporarly
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

  // Execute post
  $result = curl_exec($ch)
  if ($result === FALSE) {
      die('Curl failed: ' . curl_error($ch));
  }

  // Close connection
  curl_close($ch);
  echo $result;
}
4

1 に答える 1

9

「MismatchSenderId」は、最近発生している明らかな問題です。

この問題を引き起こす可能性のあるケースを次に示します。

ケース 1: 送信者 ID が一致しない場合 -> 使用しているプロジェクト番号を確認してください。それが正しいかどうか。

ケース 2: 間違った API キー -> 同じ API_Key を使用しているかどうかを確認してください。ほとんどの場合、Android_Key の代わりに Server_Key を生成する必要があります。

ケース 3: 間違ったデバイス ID -> ほとんどの場合、問題は間違ったデバイス ID (GCM によって生成された登録 ID) が原因です。

新しい API キーを生成するたびに、デバイスのデバイス ID が変更されることを確認してください。その後、効果が得られるまでに約5分かかります。

注 :デバイス ID は API KEY にバインドされています。

そう....

-- 新しいキーが作成されました。

--Android 用 GCM が Google Dev で「オン」になりました。コンソール。

-- バックエンドに登録されたデバイスは問題ありません (Android プロジェクトがその役割を果たしています)。サーバー上のデバイス キー。

-- デバイスに送信します。失敗!毎回同じメッセージが GCM から返されます。

要点をまとめると。これは、Android Studio、Android OS、またはデバイスの問題ではありません。GCM サーバーは、メッセージをデバイスに送信しようとさえしていません。私のサーバーはGCMに送信し、メッセージを返します...

{"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} 

サーバーに。私が知る限り、これはデバイスの ID (プッシュの登録時にデバイスに返されたものと、バックエンド (コントロール パネル) に保存されたもの) が一致しないか、何らかの形で API に関連付けられていないことを意味します。メッセージの送信時に使用されるキー。

もちろん、送信はサーバーで開始され、GCM に移動してからデバイスに移動します。

これは起こっていないことです。メッセージはサーバーから GCM に送信され、サーバーに返されます - エラーが発生します。

皆さんが想像できるように、非常に苛立たしいことです。

参考:https ://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924

それがあなたの問題を解決することを願っています。

于 2016-04-07T05:20:03.860 に答える