我正在使用 Firebase 云消息传递 (FCM)。但同样的问题也出现在 FirebaseJS 中。
我想仅使用推送 API 来执行浏览器内消息,而不需要任何通知 API。为了在消息传递上使用 getToken(),它似乎还需要通知 API 支持。我想要获取用于推送 API 的令牌,但不需要通知 API 支持。这可能吗?
当我在服务工作线程上下文中调用 Message 上的 getToken() 时,它总是响应与通知相关的错误。再说一遍,我不需要通知 API 支持。只需推送消息 API。
我使用的代码非常基本:
getToken(fbMessaging, { vapidKey: '..' })
这样产生的错误是:
“引用错误:找不到变量:通知”。 <--- I don't want to even try to use Notification API.
注 1:任何对 getToken() 的调用本质上都会调用 requestPermission()。意思是,我不必单独调用它。
注2:一般来说,我只会在不支持Notification API的浏览器上收到此错误。但这就是重点/问题。我不想需要通知 API 支持。
注 3:这些绝对是不同的 API。
目前(2024 年 4 月)Push API 仅用于可见通知。
您问的是静默推送,多年来很多人都要求这样做,但从未被允许。
您需要通知权限,并且在收到推送消息时还必须显示通知,否则您会被某些浏览器阻止(例如 Chrome 会显示默认通知来通知用户,而 Apple 会直接撤销您的推送订阅!) .