Идентификатор регистрации GCM в Service Worker в push-уведомлении для chrome

Я могу отправить push-уведомление, и в сервисном работнике я делаю вызов службы, я просто хочу отправить идентификатор регистрации GCM с этим вызовом службы. Как получить идентификатор регистрации или идентификатор подписки в сервис-воркере

вот мой код

self.addEventListener('push', function(event) {
  console.log('Received a push message from local', event);

  var title = 'My title file. Testing on';
  var body = 'New Push Message.';
  var icon = 'refresh_blueicon.png';
  var tag = 'my-push-tag';

  event.waitUntil(
// Here i need to wind GCM Registration id / Subscription id with external service call


  fetch('http://localhost/pushMsg/Push_Notification/msg.php').then(function(response){

     if (response.status !== 200) {
        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) {

       self.registration.showNotification(data.title, {
          body: data.msg,
          icon: icon,
          tag: tag
        })
  })
  })


  );
});


self.addEventListener('notificationclick', function(event) {
  console.log('On notification click: ', event.notification.tag);
  // Android doesn’t close the notification when you click on it
  // See: http://crbug.com/463146
  event.notification.close();

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(clients.matchAll({
    type: "window"
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client)
        return client.focus();
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));

});

person Yogendra    schedule 08.07.2015    source источник
comment
какова цель localhost/pushMsg/Push_Notification/msg.php   -  person Sanjay Radadiya    schedule 05.01.2017
comment
@sanjayradadiya, это получение данных json для отображения в уведомлении, таких как заголовок, изображение, краткое описание и т. д.   -  person Yogendra    schedule 06.01.2017


Ответы (1)


У вас уже должна быть доступна подписка на объект pushManager, если вы уже подписали пользователя. Итак, что-то вроде этого должно работать:

registration.pushManager.getSubscription().then(function(subscription) {
  console.log("got subscription id: ", subscription.endpoint)
});

Это вся конечная точка, поэтому, если вам просто нужен идентификатор, вы можете получить это:

subscription.endpoint.split("/").slice(-1))
person Brendan Ritchie    schedule 08.07.2015
comment
В частности, subscription.endpoint — это то, что вам нужно в Chrome 44+ и ​​в других браузерах, когда они добавляют поддержку. Если вас все еще волнует Chrome 43, прочитайте updates.html5rocks.com/2015/03/ - person Jeff Posnick; 08.07.2015
comment
Верно, спасибо. Или я думаю, что идентификатор можно считать последним элементом конечной точки. Я обновил свой ответ. - person Brendan Ritchie; 08.07.2015
comment
Registration.pushManager.getSubscription().then(function(subscription) { console.log(получил идентификатор подписки: ,subscription.endpoint)}); приведенный выше код в моем случае выглядит следующим образом: android.googleapis.com/gcm/send - person Yogendra; 09.07.2015
comment
Так каким-то образом вы получили подписку без идентификатора подписки? Я не знаю, как это возможно. Может быть, что-то делать с конфигурацией API? - person Brendan Ritchie; 09.07.2015
comment
На самом деле, если вы используете более старую версию Chrome, проверьте, есть ли что-нибудь еще в этом объекте подписки, например, subscribe.subscriptionId. - person Brendan Ritchie; 09.07.2015
comment
Да!! это работа..... спасибо. На самом деле я просто играл с chrome://serviceworker-internals/ и chrome://inspect/#service-workers и запускал push-событие с локального хоста. Так что, возможно, это может быть причиной того, что я не получил API через подписку. - person Yogendra; 09.07.2015
comment
Как я могу получить конечную точку подписки внутри моего работника службы? - person rat; 22.11.2015