Desktop push-уведомление с использованием Google Cloud Messaging и сервисного работника
Я хочу отправить push-уведомление всем пользователям моего рабочего стола, используя Google Cloud Messaging
Я успешно выполнил следующие шаги
- Инициализировано в службе
- Создал проект в Google Developers Console
- Добавлен манифест
- отправлено с использованием php CURL
Вот мои команды CURL
$url = 'https://android.googleapis.com/gcm/send';
$msg="hi";
$data = array('title'=> $msg,'message'=>'Hello');
$regids= // added regids;
$fields = array('to' => $regids,'data' => $data);
$headers = array( 'Authorization: My auth key','Content-Type: application/json');
$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_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
print_r(json_encode($fields));
$result=curl_exec($ch);
echo $result;
if($result==FALSE)
{
die('Curl Failed');
}
curl_close($ch);
Все работает нормально, и я могу отображать уведомление по умолчанию, используя следующий код
self.addEventListener('push', function(event) {
console.log('Push message', event);
var title = 'Push message';
event.waitUntil(
self.registration.showNotification(title, {
body: 'The Message',
icon: 'images/icon.png',
tag: 'my-tag'
}));
});
Но мне нужно отобразить сообщение уведомления, которое я отправил с помощью команды CURL (в приложении мы можем сделать это легко)
Я получил следующий код для получения push-уведомления (google)
self.addEventListener('push', function(event) {
// Since there is no payload data with the first version
// of push messages, we'll grab some data from
// an API and use it to populate a notification
event.waitUntil(
fetch(SOME_API_ENDPOINT).then(function(response) {
if (response.status !== 200) {
// Either show a message to the user explaining the error
// or enter a generic message and handle the
// onnotificationclick event to direct the user to a web page
console.log('Looks like there was a problem. Status Code: ' + response.status);
throw new Error();
}
// Examine the text in the response
return response.json().then(function(data) {
if (data.error || !data.notification) {
console.error('The API returned an error.', data.error);
throw new Error();
}
var title = data.notification.title;
var message = data.notification.message;
var icon = data.notification.icon;
var notificationTag = data.notification.tag;
return self.registration.showNotification(title, {
body: message,
icon: icon,
tag: notificationTag
});
});
}).catch(function(err) {
console.error('Unable to retrieve data', err);
var title = 'An error occurred';
var message = 'We were unable to get the information for this push message';
var icon = URL_TO_DEFAULT_ICON;
var notificationTag = 'notification-error';
return self.registration.showNotification(title, {
body: message,
icon: icon,
tag: notificationTag
});
})
);
});
Он всегда отображает
Нам не удалось получить информацию для этого push-сообщения
Что такое SOME_API_ENDPOINT, упомянутый в этом коде?
Я попытался с https://android.googleapis.com/gcm/send вместо конечной точки, а также с конечными точками пользователя в обслуживании, но не работал.
Любая помощь очень ценится
Ответы
Ответ 1
Насколько я знаю, упомянутый SOME_API_ENDPOINT
- это бэкэнд API, который используется для упрощения доступа клиентов к данным из других приложений.
Как обсуждалось в Обзор конечных точек Cloud,
Облачные конечные точки Google состоят из инструментов, библиотек и возможностей, позволяющих создавать API-интерфейсы и клиентские библиотеки из приложения App Engine, называемого бэкэндом API, для упрощения доступа клиентов к данным из других приложений. Конечные точки упрощают создание веб-бэкэнда для веб-клиентов и мобильных клиентов, таких как Android или Apple iOS.
Дополнительная информация об использовании конечных точек полностью обсуждается в "Рекомендации для конечных точек Google" , например, как создать бэкэнд App Engine.
Вы также можете использовать эту ссылку SO - конечные точки Google и облачные сообщения Google в качестве одной из ваших ссылок, которые могут помочь.