我使用 FCM 服务为我的网站制作了一些推送通知。它有代码(来自redux saga):
const reg = yield navigator.serviceWorker.register('/sw.js', {scope: '/'})
const sub = yield reg.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: push_key,
})
const token = JSON.stringify(sub.toJSON())
console.log(token)
服务人员:
self.addEventListener('push', function(event) {
console.log(event)
if (!self.Notification || self.Notification.permission !== 'granted')
return
let data = {}
if (event.data)
data = event.data.json()
const title = data.title || 'Something Has Happened'
const message = data.message || 'Here\'s something you might want to check out.'
event.waitUntil(self.registration.showNotification(title, {
body: message,
tag: 'simple-push-demo-notification',
}))
})
我通过简单的python脚本手动初始化推送消息:
import json
from pywebpush import webpush
t = json.loads('{"endpoint":"https://fcm.googleapis.com/fcm/send/xxx","keys":{"p256dh":"xxx","auth":"xxx"}}')
webpush(t,
json.dumps({'title': 'hello', 'message': 'world!'}),
vapid_private_key="xxx",
vapid_claims={"sub": "mailto:somemail@gmail.com"})
它完全适用于桌面 Chrome 和 Firefox,显示通知,但移动 Chrome 根本没有收到任何消息。我尝试了一些推送示例并且是同样的故事 - 它们只是不在移动设备上显示通知。我在 Android 4.2 和 Android 7.1 上使用了 Chrome 60。
那么,移动版 Chrome 是否支持推送通知?我完全糊涂了。该答案说“否”并提供一些文档链接,但我在该文档中找不到有关移动支持或不支持的内容。该答案说明了哪些通知仅适用于普通浏览器而不适用于 Chrome。但是官方文档说(甚至显示 gif!)在移动设备上应该没问题!