无法在 iOS 上发送网络推送通知,在 Android 设备上工作完美

问题描述 投票:0回答:1

我正在使用服务工作者概念(API)发送网络推送通知,是我遵循并从中获取代码示例的书。下面的代码可以完美地从客户端获取订阅,并且我能够在 Chrome Android 设备上成功发送通知

navigator.serviceWorker.register('sw.js').then(function (registration){
    return registration.pushManager.getSubscription().then(function (subscription){
    })
}).catch()
...

确切的代码似乎不适用于 iPhone chrome 网络浏览器。我尝试添加一些

console.log
来查看发生了什么,看起来我们从上面的代码中获得的
registration
对象没有设置
pushManager
属性,因此下面是我在 iPhone 中看到的问题Chrome 控制台日志。

TypeError: undefined is not an object (evaluating 'registration.pushManager.getsubscription')

这是添加这些控制台日志的代码

navigator.serviceWorker.register('sw.js').then(function (registration){
            if (registration){
                console.log("registration is found " , registration)
            } else {
                console.log("registration is not found")
            }

            if (registration.pushManager){
                console.log("pushmanager was found on registration and calling getSubscription() ", registration.pushManager.getSubscription())
            } else{
                console.log("pushmanager was not found on registration")
            }
...
...

iPhone chrome 浏览器上这段代码的输出附在此处。

我想知道是否应该使用 Notification API 来代替,但无法弄清楚是否可以使用通知 API 获取订阅详细信息。

我想看看是否有人已经遇到这个问题并能够解决它。

我能弄清楚的另一件事是

'PushManager' in window

在通知不起作用的环境中返回

false
(iOS chrome)。

javascript push-notification apple-push-notifications service-worker web-push
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.