Firebase на iPad Safari; Не могу найти переменную: Уведомление
4 ответа
Используемая вами библиотека Firebase JavaScript несовместима с Safari на iOS. Браузер Safari, работающий на устройствах iOS, отличается от сборки приложения на рабочем столе и не имеет того же набора функций.
В этом конкретном случае iOS Safari выдает ошибку в вашей библиотеке firebase.js, пытаясь использовать метод requestPermission () API веб-уведомлений, чтобы позволить firebase показывать уведомления пользователю. API уведомлений не существует.
Вы можете увидеть поддержку API уведомлений здесь: http://caniuse.com/
Возможно, вам придется искать альтернативу или отключать библиотеку firebase, когда ваше веб-приложение просматривается на мобильных устройствах, которые его не поддерживают. Если предполагается, что он работает в iOS Safari, вам следует сообщить об ошибке в Firebase и посмотреть, есть ли исправление или обновление, которое решает проблему в библиотеке firebase.js.
I OS не поддерживает API уведомлений https://caniuse.com/
Я создал функцию, которая позволяет узнать, поддерживает ли ее браузер пользователя.
const isSupported = () =>
'Notification' in window &&
'serviceWorker' in navigator &&
'PushManager' in window
И использовать его перед использованием API уведомлений
например:
if (isSupported()) {
const hasPermission = Notification.permission === 'granted'}
У меня есть ответ от поддержки Firebase:
Всем привет,
Надеюсь, у вас все хорошо, и спасибо, что обратились к нам. Веб-API FCM поддерживает только следующие браузеры, и Safari не является одним из них: Chrome: 50+ Firefox: 44+ Opera Mobile: 37+ Мы изучаем возможные решения, но на данный момент у нас нет никаких подробностей, Если у вас есть другие вопросы или разъяснения, просто дайте нам знать. Мы сделаем все возможное, чтобы помочь.
С уважением, Resty
Облачный обмен сообщениями Firebase JavaScript SDK по-прежнему не поддерживается в Safari (включая iOS Safari).
Чтобы пройти инициализацию для этого неподдерживаемого браузера, я просто создал аналогичную функцию проверки, которую использовал настоящий Firebase SDK .