javascript — проблема с отправкой данных через PHP в GCM API

Я отправляю уведомление тем, кто посетил мой веб-сайт и принял их для отправки уведомлений на рабочем столе. Я беру их регистрационный идентификатор и делаю запрос в gcm api.

НО

Я не могу отправить Notificaiton заглавие,сообщение а также значок.

Вот мой класс PHP взят из GCM с PHP (Google Cloud Messaging)

class GCMPushMessage {
var $url = 'https://android.googleapis.com/gcm/send';
var $serverApiKey = "";
var $devices = array();

/*
Constructor
@param $apiKeyIn the server API key
*/
function GCMPushMessage($apiKeyIn){
$this->serverApiKey = $apiKeyIn;
}
/*
Set the devices to send to
@param $deviceIds array of device tokens to send to
*/
function setDevices($deviceIds){

if(is_array($deviceIds)){
$this->devices = $deviceIds;
} else {
$this->devices = array($deviceIds);
}

}
/*
Send the message to the device
@param $message The message to send
@param $data Array of data to accompany the message
*/
function send($message, $data = false){

if(!is_array($this->devices) || count($this->devices) == 0){
$this->error("No devices set");
}

if(strlen($this->serverApiKey) < 8){
$this->error("Server API Key not set");
}

$fields = array(
'registration_ids'  => $this->devices,
'notification'              => array( "message" => $message ),
);

if(is_array($data)){
foreach ($data as $key => $value) {
$fields['data'][$key] = $value;
}
}
$headers = array(
'Authorization: key=' . $this->serverApiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $this->url );

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);

// Execute post
$result = curl_exec($ch);

// Close connection
curl_close($ch);

return $result;
}

function error($msg){
echo "Android send notification failed with error:";
echo "\t" . $msg;
exit(1);
}
}

Вот мой notification.php файл

$apiKey = "MY_API_KEY";
$devices = array('eBLwIaqdgOs:APA91bG-6Ry1gN1wg2jI3WOpgpQg2bxE1NxgJCBXxzE188GF46JuPO1DkWw-OiKswRr2y0K6xX8k4RKGOHqnub0zgoqgX22I1TDxOAWHrNoTn9XoRMWywARrWAq1zD78fAz3H9VcnqSW');
$message = "The message to send";
$gcpm = new GCMPushMessage($apiKey);
$gcpm->setDevices($devices);
$response = $gcpm->send($message, array('title' => 'Test title'));

echo $response;

А вот мой sw.js файл (работник службы)

'use strict';
console.log('Started', self);

self.addEventListener('install', function(event) {
self.skipWaiting();
console.log('Installed', event);
});

self.addEventListener('activate', function(event) {
console.log('Activated', event);
});

// TODOfunction showNotification(title, body, icon, data) {
console.log('showNotification');

var notificationOptions = {
body: body,
icon: icon ? icon : '/images/touch/chrome-touch-icon-192x192.png',
tag: 'simple-push-demo-notification',
data: data
};
return self.registration.showNotification(title, notificationOptions);
}

self.addEventListener('push', function(event) {
console.log('Received a push message', event);
if (event.data) {
console.log('message data', event.data);
console.log('message data', event.data.text);
var output = event.data.text();
console.log(output);
}
showNotification("My Title","My Message");
});

Когда я перезаписан в свой файл messages.php, мне появляется уведомление или какой регистрационный идентификатор я написал с названием Мой заголовок и сообщение Мое сообщение

Как вы можете видеть, эти данные приходят из sw.js но я не хочу отправлять их через php, потому что они являются динамическими переменными, я получу их от пользователя.

Помоги мне с этим, пожалуйста. Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]