GCM funktioniert nicht auf Live-Servern
-
20-12-2019 - |
Frage
Ich habe Push-Benachrichtigungen mit GCM implementiert.Alles funktioniert perfekt, wenn ich die erforderlichen Dateien ausführe, um Nachrichten von meinem lokalen Server (auf meinem Computer mit) an das Gerät zu senden XAMPP
Server).Aber wenn ich Dateien auf meinen Live-Server hochlade und wenn ich die Dateien ausführe, erhalte ich keine Push-Benachrichtigung.Ich habe alle Dateien überprüft, aber ich bekomme sie nicht.Unten ist mein php
Codes:
nachricht senden.PHP
<?php
if (isset($_REQUEST["regId"]) && isset($_REQUEST["message"]) && isset($_REQUEST["senderid"])) {
$regId = $_REQUEST["regId"];
$message = $_REQUEST["message"];
$senderid = $_REQUEST["senderid"];
include_once './GCM.php';
$gcm = new GCM();
$registatoin_ids = array($regId);
$message = array("message" => $message, "sender_id" => $senderid);
$result = $gcm->send_notification($registatoin_ids, $message);
echo $result;die;
}
?>
GCM.PHP
<?php
class GCM {
function __construct() {
}
public function send_notification($registatoin_ids, $message) {
// include config
include_once './config.php';
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
$headers = array(
'Authorization: key=' . GOOGLE_API_KEY,
'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);
// Disabling SSL Certificate support temporarly
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
// Execute post
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
// Close connection
curl_close($ch);
echo 'result';
echo json_encode($fields);
echo $result;
}
}
?>
Ich führe aus nachricht senden.PHP datei von meinem Browser durch Bereitstellung des Servers url
und notwendige Parameter.Auf dem lokalen Computer erhalte ich eine Push-Benachrichtigung, aber während ich dieselbe Datei ausführe, indem ich einen Live-Server bereitstelle url
, es gibt mir keine Ausgabe.Was kann das Problem sein?
Lösung
Wenn Sie von einer Live-Adresse aus auf die PHP-Seite zugreifen möchten, müssen Sie nur aktivieren cURL
von Ihrem XAMPP
Gehen Sie zu Ihrem PHP.ini-Datei und folgende Zeile auskommentieren ( löschen ;
wird es aus dem Kommentar entfernen),
;extension=php_curl.dll
Danach können Sie curl in phpinfo () wie im folgenden Bild überprüfen,
Für LAMPE
Von http://buzznol.blogspot.com/2008/12/install-curl-extension-for-php-in.html:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
Nach der Installation von libcurl sollten Sie den Webserver mit einem der folgenden Befehle neu starten,
sudo /etc/init.d/apache2 restart
ODER sudo service apache2 restart
Andere Tipps
Das Problem liegt möglicherweise am API-Schlüssel, den Sie zum Senden von Push-Benachrichtigungen an das Android-Gerät verwenden.
In der Google Developers Console sind zwei Arten von API-Schlüsseln verfügbar:
Verwenden Sie ein serverschlüssel wenn Ihre Anwendung auf einem Server ausgeführt wird.
Verwenden Sie ein browser-Schlüssel wenn Ihre Anwendung auf einem Client ausgeführt wird, zum Beispiel aus JavaScript oder einem anderen clientseitigen Webbrowser-Kontext.
Unten ist der Screenshot der Entwicklerkonsole, wo Sie die bekommen würden browser- und Server-API-Schlüssel.