用于chrome的推送通知中的服务工作者中的GCM注册ID

Yog*_*dra 9 google-cloud-messaging chrome-gcm service-worker web-push push-api

我能够发送推送通知,并且在服务工作者中我正在进行服务呼叫我只是想要通过该服务调用发送GCM注册ID.如何在服务工作者中获取注册ID或订阅ID

这是我的代码

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('/');
  }));

});
Run Code Online (Sandbox Code Playgroud)

Bre*_*hie 9

pushManager如果您已订阅该用户,则您应该已在该对象上提供订阅.所以像这样的东西应该工作:

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

那是整个端点,所以如果你只想要id,你可以得到这个:

subscription.endpoint.split("/").slice(-1))
Run Code Online (Sandbox Code Playgroud)