GoogleCloudMessaging script PHP revenant toujours invalidregistration
Je sais qu'il y a beaucoup de messages avec le même problème, mais après tous les lire, je ne pouvais pas trouver la raison du problème.
J'ai écrit un GCM client pour enregistrer mon appareil pour recevoir des messages à partir de mon serveur. Il est de travail et je peux stocker l'ID d'enregistrement dans ma base de données.
Mon problème est dans le côté serveur. Je suis à l'aide d'un script trouvé sur google, mais je reçois toujours un résultat de l'erreur:
{"multicast_id":7341760174206782539,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
Le code PHP (je suis en utilisant le NAVIGATEUR de l'API au lieu de l'API SERVEUR comme indiqué sur le tutoriel, mais en essayant les deux touches renvoie le même message):
<?php
//Replace with real BROWSER API key from Google APIs
$apiKey = "AIzaSyACln4edhSZW30XcmYpqoMz_gcRCC1iFjY";
//Replace with real client registration IDs
$registrationIDs = array( "APA91bEdf1w4dQtsUqPT1jHhWEpvrpxzB1yrpL3RVtKrVxfzxfg2-Yl-pwHorsnmSnkqywQ8G90YcGEBoqCjgQU8CnjA0N7mOWF8bHMhHAs4ty46PPTX8yh6eSaSqvU3JTMmb-P0ma90EBG0rsQQbUh3aX895KxitI3LCiGOYqRfE5pZQ");
//Message to be sent
$message = "this is a test";
//Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . $apiKey,
'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 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
//Execute post
$result = curl_exec($ch);
//Close connection
curl_close($ch);
echo $result;
?>
J'ai mis le real id et la clé pour voir si je suis en train de faire. Des idées?
OriginalL'auteur Joubert Vasconcelos | 2013-07-31
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème quelques minutes plus tôt.
Modifier cette
:
($row_['GCM']), de travaux, vous avez besoin d'effectuer une itération dans un foreach, je ne sais pas exactement, mais il fonctionne.
Votre solution fonctionne! merci 🙂
OriginalL'auteur Christian Jb
J'ai trouvé mon problème. Ma bibliothèque PHP supprimé certains des personnages de post ou get variables. Et un de caracteres est '_', car il peut être utiliser que l'injection SQL. C'était mon problème. Fixe!
OriginalL'auteur Joubert Vasconcelos
J'ai eu le même problème. Mon problème était mon gcm_regid. La longueur de gcm_regid est 183 octets. Cependant, mon utilisation de base de données de 150 octets pour stocker cette valeur. Certainement la stockées gcm_regid est incomplète. J'ai résolu le problème en augmenter la taille de stockage de la clé. Alors le problème est résolu.
OriginalL'auteur Comet
Vous pouvez utiliser ce code:
Vous pouvez modifier
notification
àdata
comme vous le souhaitez.OriginalL'auteur anas
Il suffit de remplacer le code avec cela et il va fonctionner.
assurez-vous de remplacer
YOUR_REGISTRATION_ID
,YOUR_MESSAGE
,YOUR_API_KEY
,REGISTRATION_IDS
et d'autres commentaire avec l'original.La modification de la ligne $regArray=REGISTRATION_IDS; $regArray=array(REGISTRATION_IDS), j'ai obtenu le vieux résultat: invalidRegistration;
hey, il suffit de remplacer le
$regArray=REGISTRATION_ID
à$regArray[]=REGISTRATION_ID
Merci. Même problème: invalidRegistration. 🙁
pouvez-vous me dire comment écrivez-vous
$regArray[]=REGISTRATION_ID
? Dans les guillemets?OriginalL'auteur P Ravikant
Êtes-vous sûr de la valeur de l'IDENTIFIANT d'inscription que vous envoyez à Google est-il correct?
Alors que je ne sais pas quel est le format d'un Enregistrement valide ID, je n'ai jamais vu un IDENTIFIANT pour votre Inscription avec un des 2 personnages à la section entre les deux tirets que vous avez dans votre Id d'Enregistrement :
...2-Yl-p...
.OriginalL'auteur Eran
Post un tableau de données.
ex :
puis appelle la fonction..
OriginalL'auteur user2313776
Problème similaire et à la fin c'était le mauvais numéro d'enregistrement (token).
J'ai ajouté la ligne suivante
pour le code PHP pour vérifier que l'ID est exactement comme le jeton imprimé dans le logcat et a découvert, à l'aide de la ligne echo, qu'il y avait un espace ajouté au début et à la fin de l'id. Une fois que j'ai enlevé les espaces le message a été envoyé avec aucune erreur.
OriginalL'auteur Zvi