angular - Angular PWA swPush.requestSubscription() 不起作用,错误:此浏览器禁用或不支持服务工作者
问题描述
我有一个使用 Angular 8 的 Ionic 5 PWA。我使用 swPush 完成了推送通知,它在 3 月之前一直按预期工作。但是,从上个月开始,由于其他一些变化,这停止了工作。我无法隔离问题。
swPush.isEnabled()
返回 false,即使服务工作者已注册。关于 swPush 及其实现,代码中没有任何变化。我尝试了这个未回答的链接,但也没有帮助
当我使用 PUSH NOTIFICATION API(使用 PushManager)时,没有错误,一切正常,我正在获取订阅对象。这是 swPush 实现的问题,还是我的错误?
通知服务.ts
this.swPush.requestSubscription({
serverPublicKey: this.VAPIDPublicKey
})
.then((sub: PushSubscription) => {
const keys: SubscriptionObjectKeys = {
auth: sub.toJSON().keys.auth,
p256dh: sub.toJSON().keys.p256dh
};
const subscriptionObject: SubscriptionObject = {
endpoint: sub.endpoint,
expirationTime: 0,
keys: keys
};
resolve(subscriptionObject);
})
.catch(err => {
console.error('Could not subscribe to notifications', err);
reject(err);
});
Chrome 中的错误
Error: Service workers are disabled or not supported by this browser
at e.requestSubscription (service-worker.js:391)
at notification.service.ts:123
at new D (zone-evergreen.js:960)
at t.<anonymous> (notification.service.ts:103)
at Generator.next (<anonymous>)
at tslib.es6.js:73
at new D (zone-evergreen.js:960)
at o (tslib.es6.js:69)
at t.subscribeToSWPush (common-es2015.ffedc7b115b497dcd514.js:1)
at t.<anonymous> (notification.service.ts:61)
我也在 macOS 和 Windows 10 中使用 HTTP Server 和 SSL 进行了检查。两者都显示相同的问题。
我创建了一个新的 Ionic 应用程序并实现了相同的代码,在那里运行良好。我无法隔离问题。
任何建议都会非常有帮助。
解决方案
我也得到了swPush.requestSubscription Error: Service workers are disabled or not supported by this browser...
. 另外,swPush.isEnabled
返回false。
我没有使用ng serve
,因为我知道服务人员不会在那里运行。我的 Angular PWA 正在使用 IIS 10、域名和 SSL(使用https
)的临时服务器上运行。检查 chrome 调试(应用程序 > 服务工作人员)ngsw-worker.js 是#687 activated and is running
. 除了 swPush 问题,我的 PWA 运行得非常好(就像我的 Windows 10 盒子上的桌面应用程序)。
我正在使用 Angular 11.2.7。你们解决了这个问题吗?
推荐阅读
- android - 在android中定制设计ui一个listview
- python - 有没有办法创建一个熊猫数据框,其行是整数,直到每行达到某个值为止?
- email - 对于邮件,“format=fixed”是“format=flowed”的有效/标准对应物吗?
- node.js - GCP Cloud Functions 不寻找 function.js
- java - 如何在类上使用具有不同参数的抽象方法?
- python-3.x - Python - 检查进程(Python3 脚本)是否正在运行
- angular - 当机器人访问站点 Angular2 时,规范元标记使用 http 而不是 https 呈现
- javascript - Websocket客户端重新连接空闲连接
- php - 产品页面中的 ACF 分类图像
- google-bigquery - BigQuery CLI:我可以将所有负载作业类型列出到特定数据集吗?