2016-11-04 2 views
-1

Ich habe versucht, Benachrichtigung auf Android-Geräten mit MySql PHP Server und Firebase zu senden. Firebase-Token werden in meiner Datenbank erfolgreich abgerufen, aber wenn ich versuche, Benachrichtigungen von php an alle Geräte zu senden, wird sie an das erste Gerät gesendet, das auf meiner Datenbank gespeichert ist.Firebase Push-Benachrichtigung von PHP MYSQL Server funktioniert nicht auf mehreren Geräten

Ich bin hier posten den PHP-Code, ich habe es ein wenig analysiert, aber der Code ist für einen Firebase-Token getan.

function sendPushNotification() { 
require "init.php"; 
$message="Notification Details"; 
$title="Notification Title"; 

$url='https://fcm.googleapis.com/fcm/send'; 
$server_key="MY_FIREBASE_KEY"; 
$sql="select fcm_token from fcm_info"; 
$result=mysqli_query($con,$sql); 
$row=mysqli_fetch_row($result); 
$key=$row[0]; 

$headers=array(
'Authorization:key ='.$server_key, 
'Content-Type: application/json' 
); 

$fields=array('to'=>$key,'notification'=> 
array('title'=>$title,'body'=>$message)); 

$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_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

$result = curl_exec($ch); 
curl_close($curl_session); 
mysqli_close($con);} 

Später habe ich versucht, ein wenig zu ändern, alle Tokens von DB abfragt und Assoc Array zu machen und dann das Array als Schlüssel übergeben. In diesem Fall abschicken nicht und gibt mir eine Fehlermeldung,

"to" must be json

+0

Sie wissen, dass es eine Dokumentation gibt, wie jsons an 'https: // fcm.googleapis.com/fcm/send' senden soll? ... 'to' ist für eine einzelne Nachricht (damit Sie es verwenden können, schwieriges Wort voraus, ** Schleife **) ... wenn Sie mehrere Nachrichten gleichzeitig senden müssen - lesen Sie die Dokumentation (ich wette auf' registration_ids') – Selvin

+1

Ihr obiger Code holt nur einzelne Datensätze aus den Abfrageergebnissen. Durchlaufen Sie die Ergebnisse, wenn Sie allen Benutzern eine Benachrichtigung senden möchten. – Shadow

+1

Kannst du mehr über dein Szenario erzählen? Versuchen Sie, dieselbe Nachricht an alle Geräte zu senden? Wenn ja, warum nutzen Sie nicht einfach Topic Messaging? –

Antwort

0

Wie @Selvin sagte, löste ich mein Problem registration_ids statt to verwenden.

Verwandte Themen