GCM não está funcionando no servidor live
-
20-12-2019 - |
Pergunta
Eu tenho implementado de notificação por push usando GCM.Está tudo funcionando perfeito, quando eu executar arquivos necessários para enviar mensagens para o dispositivo a partir do meu servidor local (no meu computador com o XAMPP
server).Mas quando eu fazer o upload de arquivos para o servidor e quando eu executar os arquivos, eu não estou recebendo notificação de envio.Eu verificados todos os arquivos, mas eu não estou recebendo.Abaixo está o meu php
código:
send_message.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;
}
}
?>
Estou executando send_message.php arquivo do meu navegador fornecendo servidor url
e necesasry parâmetros.No computador local, estou recebendo notificação de envio, mas enquanto eu executar o mesmo arquivo, fornecendo ao vivo servidor url
, não me dando nenhuma saída.O que pode ser o problema?
Solução
Quando você deseja acessar a página PHP de viver de endereço, você só precisa ativar cURL
a partir de sua XAMPP
Ir para o php.arquivo ini e un-comentário seguinte linha ( apagar ;
irá removê-lo a partir de comentário ),
;extension=php_curl.dll
Após fazer isso, você pode verificar a curvatura no phpinfo (), como abaixo da imagem,
Para LÂMPADA
A partir de http://buzznol.blogspot.com/2008/12/install-curl-extension-for-php-in.html:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
Depois de instalar o balsa você deve reiniciar o servidor de web com um dos seguintes comandos,
sudo /etc/init.d/apache2 restart
OU sudo service apache2 restart
Outras dicas
O problema pode ser a Chave API que você está usando para enviar notificações por push para o Dispositivo Android.
Dois tipos de chaves de API estão disponíveis no Google Desenvolvedores do Console:
Usar um chave do servidor se seu aplicativo é executado em um servidor.
Usar um navegador chave se o seu aplicativo está sendo executado em um cliente, por exemplo, a partir de JavaScript ou qualquer outro do lado do cliente web-browser contexto.
Abaixo está a imagem dos Desenvolvedores do Console, onde você iria ficar o navegador & API do servidor de Chaves.