Получение настраиваемого сообщения из 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: он возвращает обещание, поэтому убедитесь, что ваш обслуживающий работник ждет выполнения обещания.

Другие вопросы по тегам