2016-05-31 30 views
0

Ich versuche, eine Push-Nachricht an alle Android-Nutzer meiner Anwendung zu senden. Ich kann nur an einen Benutzer senden und nicht an alle senden.Senden von Push-Nachrichten an alle Benutzer mit GCM

ist hier mein Code:

PUSH.php

<?php 
// API access key from Google API's Console 
define('API_ACCESS_KEY', 'my api key'); 

$registrationIds = array('user_push_id'); 


$msg = array 
(
    'URL' => 'http://www.apple.com/in/', 
    'message' => 'Did you like it ???', 
    'image' =>'http://icons.iconarchive.com/icons/dan-wiersma/apple-tv/128/Apple-Logo-icon.png' 
); 

$fields = array 
(
    'registration_ids' => $registrationIds, 
    'data'   => $msg 
); 

$headers = array 
(
    'Authorization: key=' . API_ACCESS_KEY, 
    '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, wie unten alle Benutzer von MySQL-Tabelle bekommen:

$sth = mysqli_query("SELECT PUSH_ME from push_msg_android"); 
$registrationIds = array(); 
while($r = mysqli_fetch_array($sth)) { 
    $registrationIds['PUSH_ID'] = $r; 
} 

Antwort

1

Um eine zu senden Push-Benachrichtigung an mehrere Benutzer, müssen Sie das registrationIds Array mit allen Benutzerregistrierungs-IDs füllen.

Am Ende es so aussehen sollte, wenn man 3 Benutzer haben:

[78475826748590, 74648598273895, 85737485957849] 

In Ihrem Fall bedeutet es, diese Zeile ersetzen:

$registrationIds = array('user_push_id'); 

von:

$result = mysqli_query($db, "SELECT PUSH_ID from push"); 
$registrationIds = array(); 
while($row = mysqli_fetch_array($result)) { 
    $registrationIds[] = $row[0]; 
} 

Dies setzt voraus, dass die Benutzerregistrierungs-IDs in der Spalte PUSH_ID der Tabellegespeichert sindIhrer Datenbank.

In einer normalen Umgebung, wo Ihr Benutzer Registrierung ids in einer Spalte push_notification_idusers in einer Tabelle gespeichert werden würde, sollte die Abfrage sein:

$result = mysqli_query($db, "SELECT push_notification_id from users"); 
$registrationIds = array(); 
while($row = mysqli_fetch_array($result)) { 
    $registrationIds[] = $row[0]; 
} 

Sie werden auch das $db Objekt erstellen müssen, bevor , um die Verbindung zur Datenbank herzustellen. Zum Beispiel:

$db = mysqli_connect("localhost","my_user","my_password","my_db"); 
+0

Erhalte diesen Fehler ...................... {"multicast_id": 6112092832428284343, "Erfolg": 0, "Fehler" : 2, "canonical_ids": 0, "results": [{"Fehler": "InvalidRegistration"}, {"Fehler": "InvalidRegistration"}]} –

+0

id - int (11) .... PUSH_ID - (Text) ..... DEVEICE_ID (Text) –

+0

der Tabellenname ist .... push –

Verwandte Themen