2016-04-10 7 views
0

wenn ich versuche, Nachricht zu senden (vom Server zum Handy mit GCM Push-Benachrichtigung) bekomme ich folgenden Fehler. Ich habe versucht, die alle Lösungen, die in anderen Posts in stackoverflowMismatchSenderId Fehler von GCM (mit GCM Push-Benachrichtigung)

haben versucht {"multicast_id": xxxxxx, "Erfolg": 0, "Fehler": 1, "canonical_ids": 0, "Ergebnisse": [ { "Fehler": "MismatchSenderId"}]}

  1. ich habe meine Anmeldung in GCM

    Server Schlüssel 1 getan: xxxxxxxxxx ID Projekt: xxxxxx

  2. in meinem android-Code, den ich habe folgendes festgelegt (m y Paketname ist com.revu.revu)

    a. Manifest-Datei:

 // When notification received from GCM, then activate this service 
 
     <service 
 
      android:name=".PushNotificationService" 
 
      android:exported="false"> 
 
      <intent-filter> 
 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
 
      </intent-filter> 
 
     </service> 
 

 
     <receiver 
 
      android:name="com.google.android.gms.gcm.GcmReceiver" 
 
      android:exported="true" 
 
      android:permission="com.google.android.c2dm.permission.SEND"> 
 
      <intent-filter> 
 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
 
       <category android:name="com.revu.revu" /> 
 
      </intent-filter> 
 
     </receiver> 
 

 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
 
<permission android:name="com.revu.revu.permission.C2D_MESSAGE" 
 
    android:protectionLevel="signature" /> 
 
<uses-permission android:name="android.permission.READ_SMS" /> 
 
<uses-permission android:name="com.revu.revu.permission.C2D_MESSAGE" />

b. Ich habe die Registrierungs-ID von GCM Server und ich habe in meinem Server gespeichert.

c. Wenn ich versuche, eine Nachricht an die Registrierungs-ID mit dem API-Schlüssel (Serverschlüssel) zu senden, erhalte ich den obigen Fehler (MismatchsenderId).

Ich habe folgende PHP-Code verwendet Nachricht

<?php 
 
// API access key from Google API's Console 
 
define('API_ACCESS_KEY', 'xxxxxxxxxxxxxxxxx'); 
 
$regId = "APA91bFidqJmnqm0GGmWRmkwB8Kn4fLJ0WPUTbWo3l2bbgQGNnzqbiYKyB4QJ-_JlvoA2tHFhgON2egA_1eJ82TA2sm38qdJVeP2Qk4CW1poxMcFu0emUC1Y_Lf3otKy6U5YAnn2ralS"; 
 
$registrationIds = array($regId); 
 
// prep the bundle 
 
$msg = array 
 
(
 
\t 'message' \t => 'here is a message. message', 
 
\t 'title' \t \t => 'This is a title. title', 
 
\t 'subtitle' \t => 'This is a subtitle. subtitle', 
 
\t 'tickerText' \t => 'Ticker text here...Ticker text here...Ticker text here', 
 
\t 'vibrate' \t => 1, 
 
\t 'sound' \t \t => 1, 
 
\t 'largeIcon' \t => 'large_icon', 
 
\t 'smallIcon' \t => 'small_icon' 
 
); 
 
$fields = array 
 
(
 
\t 'registration_ids' \t => $registrationIds, 
 
\t 'data' \t \t \t => $msg 
 
); 
 
    
 
$headers = array 
 
(
 
\t 'Authorization: key=' . API_ACCESS_KEY, 
 
\t 'Content-Type: application/json' 
 
); 
 
    
 
$ch = curl_init(); 
 
curl_setopt($ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send'); 
 
curl_setopt($ch,CURLOPT_POST, true); 
 
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); 
 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
 
curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields)); 
 
$result = curl_exec($ch); 
 
curl_close($ch); 
 
echo $result; 
 

 
?>

Bitte helfen Sie mir zu schicken, bin ich hier jeden Schritt fehlt.

+0

es bedeutete, Ihre Senderid falsch ist, überprüfen Sie es wieder plz –

+0

mir bitte schlagen einige Links, die für App-Registrierung in GCM –

+0

Ich folge dieser den gesamten Vorgang gibt und Erfolg: http://www.androidwarriors.com/2015/10/push-notification-using-gcm-in-android.html –

Antwort

0

Ich denke, es hat etwas mit der Art und Weise zu tun, Sie auf API-Zugriff für Ihr Projekt in dem Google Developer Console festgelegt haben,

Nicht übereinstimm Sender ID ist auf eine bestimmte Gruppe von Absendern gebunden. Wenn sich eine Anwendung für die GCM-Verwendung registriert, muss sie angeben, welche Absender Nachrichten senden dürfen. Stellen Sie sicher, dass Sie eine davon verwenden, wenn Sie versuchen, Nachrichten an das Gerät zu senden. Wenn Sie zu einem anderen Absender wechseln, funktionieren die Registrierungs-IDs nicht. Tritt auf, wenn der Fehlercode 'MismatchSenderId' lautet.

Hier ist ein SO-Ticket im Zusammenhang, die MismatchSenderID diskutieren: PHP GCM error message MismatchSenderId

+0

Bitte schlagen Sie mir einige Links vor, die das komplette Verfahren zur App-Registrierung in GCM enthalten. –

+0

Ist es zwingend erforderlich, die App im Google Play Store zu platzieren? um die GCM Push-Benachrichtigung zu aktivieren? Bis jetzt erstelle ich eine apk-Datei und installiere sie direkt auf meinem Handy und versuche es. –

+0

Hallo Masthan, check this https://developers.google.com/cloud-messaging/ –