【发布时间】:2017-01-05 20:13:51
【问题描述】:
我使用 Firebase 的云消息传递,但它不适用于 iPad 和 iPhone。这是我能用它做的最简单的用法。我刚刚完成了所有关于异地通知的教程,但我直接在 Firebase 的脚本 中遇到了这个错误。
【问题讨论】:
标签: javascript firebase firebase-cloud-messaging
我使用 Firebase 的云消息传递,但它不适用于 iPad 和 iPhone。这是我能用它做的最简单的用法。我刚刚完成了所有关于异地通知的教程,但我直接在 Firebase 的脚本 中遇到了这个错误。
【问题讨论】:
标签: javascript firebase firebase-cloud-messaging
iOS 不支持通知 API https://caniuse.com/#search=Notification
我创建了一个函数,让您知道用户的浏览器是否支持它。
const isSupported = () =>
'Notification' in window &&
'serviceWorker' in navigator &&
'PushManager' in window
在使用通知 API 之前使用它
例如:
if (isSupported()) {
const hasPermission = Notification.permission === 'granted'}
【讨论】:
您使用的 firebase JavaScript 库与 iOS 上的 Safari 不兼容。在 iOS 设备上运行的 Safari 浏览器与应用程序的桌面版本不同,并且没有相同的功能集。
在这种特定情况下,iOS Safari 会在您的 firebase.js 库上抛出错误,尝试使用 Web 通知 API 的 requestPermission() 方法以允许 firebase 向用户显示通知。不过通知 API 不存在。
您可以在此处查看对通知 API 的支持:http://caniuse.com/#search=Notification
当在不支持它的移动设备上查看您的网络应用时,您可能需要查看替代方案或禁用 firebase 库。如果它应该在 iOS Safari 上运行,那么您应该向 Firebase 提交一个错误,并查看是否有可用的补丁或更新来解决 firebase.js 库中的问题。
【讨论】:
Firebase JavaScript SDK 的云消息传递仍然是 does not supported from Safari(包括 iOS Safari)。
为了给那些不支持的浏览器通过初始化,我刚刚创建了与actual firebase SDK used类似的检查函数。
【讨论】: