Android: message d'erreur “incompatibilité de l'id de l'expéditeur”, tout en poussant la notification à l'appareil android si PHP et GCM
je suis en train d'envoyer une notification sur mon téléphone via mon .page php...
tout est mis en place correctement, mais j'obtiens l'erreur:
{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
je ne sais pas pourquoi, parce que l'id de l'expéditeur est en droit, l'api aussi (j'ai essayé la clé du serveur et le navigateur clé, juste pour être sûr).
je ne sais vraiment pas où je me trompe!
dans mon application j'ai seulement l'id de l'expéditeur et tout s'est bien passé, dans mon serveur, j'ai eu la clé pour le navigateur (maintenant):
<?php require_once("../pi_classes/commonSetting.php");
include('../pi_classes/User.php');
ini_set("display_errors",1);
class GCM{
function __construct(){}
public function send_notification($registatoin_ids,$message){
//GOOGLE API KEY
define("GOOGLE_API_KEY","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
$url="https://android.googleapis.com/gcm/send";
$fields=array(
"registration_ids"=>$registatoin_ids,
"data"=>$message,
);
var_dump($fields);
$headers=array(
"Authorization: key=".GOOGLE_API_KEY,
"Content-Type: application/json"
);
$ch=curl_init();
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_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));
$result=curl_exec($ch);
if($result===FALSE){
die("Curl failed: ".curl_error($ch));
}
curl_close($ch);
echo $result;
}
}
//======================
//=INVIA LE NOTIFICHE AGLI UTENTI =
//======================
$messaggio="Ciao, sono una notifica!";
$pushCounter=0;
$registatoin_ids=array();
$result=mysql_query("SELECT android_regi_id FROM user_details");
while($row=mysql_fetch_array($result)){
$token=$row["android_regi_id"];
if($token!=""){
$registatoin_ids[]=$token;
$pushCounter++;
}
}
if($pushCounter>0){
$gcm=new GCM();
$message=array("price"=>$messaggio);
$result_android=$gcm->send_notification($registatoin_ids,$message);
echo $result_android;
}
à cause de l'id de l'expéditeur de l'appareil est alors différent du serveur de l'id de l'expéditeur.vous devez utiliser le même serveur de l'id de l'expéditeur en tant que périphérique d'id de l'expéditeur
? sur les périphériques, j'ai mis ceci: cloud.google.com/console/project/yyyyyyyyyyyyyyyy/apiui/api/... (uniquement le yyyyyyyyyyyyyyyy). donc, ce doit être ok
l'utilisateur code.google.com/apis/console/b/0/?noredirect&pli=1#du projet:SENDER_KEY:accès
? quoi? je ne te comprends pas. ils ont dit ceci: /** * Remplaçant, vous propre ID de l'expéditeur ici. C'est le numéro de projet que vous avez obtenu * à partir de l'API de la Console, comme décrit dans "prise en main." */ String SENDER_ID = "Votre-Sender-ID";
vous avez obtenu votre id de l'expéditeur où j'ai écris SEDNER_KEY dans votre projet google Url
? sur les périphériques, j'ai mis ceci: cloud.google.com/console/project/yyyyyyyyyyyyyyyy/apiui/api/... (uniquement le yyyyyyyyyyyyyyyy). donc, ce doit être ok
l'utilisateur code.google.com/apis/console/b/0/?noredirect&pli=1#du projet:SENDER_KEY:accès
? quoi? je ne te comprends pas. ils ont dit ceci: /** * Remplaçant, vous propre ID de l'expéditeur ici. C'est le numéro de projet que vous avez obtenu * à partir de l'API de la Console, comme décrit dans "prise en main." */ String SENDER_ID = "Votre-Sender-ID";
vous avez obtenu votre id de l'expéditeur où j'ai écris SEDNER_KEY dans votre projet google Url
OriginalL'auteur D Ferra | 2014-01-15
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème.
La solution est d'utiliser mon Numéro de Projet au lieu de API_KEY pour la sender_id dans l'application android.
Sur le serveur de script, vous devez tenir les API_KEY.
Vous pouvez voir votre Numéro de Projet dans l'onglet "vue d'ensemble" à l'intérieur de votre projet sur Google Developers Console.
OriginalL'auteur M_iserte
Veuillez exécuter le script ci-dessous dans votre terminal
MismatchSenderId
parce qu'au sein même de l'appareil que vous avez connecté avec des clés différentes. pour résoudre ce problème, désinstaller une application et l'exécuter à nouveau et mettre à jour la clé d'enregistrement. et puis exécutez le script CURL dans votre terminal, qui je le post ci-dessus, il donnera message de réussite et vous recevrez une notification sur votre appareilOriginalL'auteur Raj Kumar
J'ai eu le même problème. la question précise était j'ai oublié de changer le nouveau google-services.json que j'ai téléchargé après l'importation de mon projet de Firebase de GCM.
Assurez-vous de mettre à jour le google-services.json après l'importation
OriginalL'auteur Akhil Dad
google-service.fichier json.
défini dans votre fichier php
OriginalL'auteur Jatin Bansal