GCM webpush 在后台
GCM webpush in background
我实现了网络推送通知。获取错误的步骤:
- 打开网站
- 订阅推送通知
- 通过 gcm 发送许多推送 - 一切正常
- 关闭站点选项卡
- 发送推送和接收"double push" - 第一个没问题,第二个是"This site has been updated in background"
- 重新打开网站
- 发送推送 - 一切正常
我知道当 service worker 收到推送但不显示通知时会发生这种情况。但是我看到正常的通知,为什么我也看到其他奇怪的通知?我可以摆脱这种行为吗?
self.addEventListener('push', function(event) {
// this function should return promise always
}
就我而言:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.pushManager.getSubscription()
.then(function(subscription) {
fetch('url')
.then(function(response) {
self.registration.showNotification('title', {});
});
});
);
}
应该是:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.pushManager.getSubscription()
.then(function(subscription) {
return fetch('url')
.then(function(response) {
return self.registration.showNotification('title', {});
});
});
);
}
我实现了网络推送通知。获取错误的步骤:
- 打开网站
- 订阅推送通知
- 通过 gcm 发送许多推送 - 一切正常
- 关闭站点选项卡
- 发送推送和接收"double push" - 第一个没问题,第二个是"This site has been updated in background"
- 重新打开网站
- 发送推送 - 一切正常
我知道当 service worker 收到推送但不显示通知时会发生这种情况。但是我看到正常的通知,为什么我也看到其他奇怪的通知?我可以摆脱这种行为吗?
self.addEventListener('push', function(event) {
// this function should return promise always
}
就我而言:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.pushManager.getSubscription()
.then(function(subscription) {
fetch('url')
.then(function(response) {
self.registration.showNotification('title', {});
});
});
);
}
应该是:
self.addEventListener('push', function(event) {
event.waitUntil(
self.registration.pushManager.getSubscription()
.then(function(subscription) {
return fetch('url')
.then(function(response) {
return self.registration.showNotification('title', {});
});
});
);
}