Получение настраиваемого сообщения из GCM с помощью веб-push-уведомлений
Я использую веб-уведомления с Chrome, и они отлично работают. Но теперь я хочу доставить собственное сообщение в моих уведомлениях. Я могу попросить моего сервисного работника обратиться на мой сайт, чтобы получить контент, как это делается на https://simple-push-demo.appspot.com/- это нормально, если я хочу, чтобы каждый получатель видел одно и то же сообщение.
Есть ли способ получить либо получатель registration_id
или message_id
что GCM возвращает? Если бы я мог получить что-то из этого и включить их в обратный вызов службы, я мог бы настроить ответ.
Кроме того, есть какая-нибудь информация о том, когда мы сможем включить полезную нагрузку в вызов GCM?
2 ответа
registration_id
а также message_id
поля не отображаются, но если пользователь предварительно прошел аутентификацию в вашем приложении, любой fetch()
на сервер от вашего Service Worker будут включены учетные данные (и информация о сеансе), которые вы можете использовать для их идентификации.
Если это не работает для вашего случая, вы можете сохранить информацию о пользователе / сеансе в IndexedDB.
Скоро появятся полезные данные - скорее всего, Chrome 50 или 51 - на основе протокола Web Push. Это немного лишние затраты и работа по настройке (обязательного) шифрования.
Это возможно, но я бы не стал этого делать, поскольку он специфичен для GCM, тогда как другие браузеры используют другие сервисы.
Вы можете либо создать уникальный идентификатор для каждого пользователя (как мы это делаем в Mercurius) и сохранить его в IndexedDB, либо вы можете использовать весь URL-адрес конечной точки в качестве идентификатора.
Вот фрагмент, чтобы получить registration_id
:
self.registration.pushManager.getSubscription()
.then(function(subscription) {
if (subscription) {
var endpoint = subscription.endpoint;
var endpointParts = endpoint.split('/');
var gcmRegistrationID = endpointParts[endpointParts.length - 1];
console.log(gcmRegistrationID);
}
});
PS: он возвращает обещание, поэтому убедитесь, что ваш обслуживающий работник ждет выполнения обещания.