Идентификатор регистрации GCM в Service Worker в Push-уведомлении для chrome
Я могу отправить push-уведомление, и в service worker я делаю вызов службы, я просто хочу отправить идентификатор регистрации GCM с этим вызовом службы. Как получить ID регистрации или ID подписки в service worker
вот мой код
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('/');
}));
});
1 ответов
у вас уже должна быть доступная подписка на pushManager
объект, если вы уже подписались на пользователя. Что-то вроде этого должно работать:
registration.pushManager.getSubscription().then(function(subscription) {
console.log("got subscription id: ", subscription.endpoint)
});
Это вся конечная точка, поэтому, если вы просто хотите идентификатор, вы можете получить это:
subscription.endpoint.split("/").slice(-1))