IOS 网络浏览器上的 Firebase 消息传递
Firebase Messaging on IOS web browsers
Firebase 消息推送通知在桌面和 Android 网络浏览器上没有任何问题,但是当我在 IOS 设备上测试它时,我使用的浏览器、通知和 .getToken() 并不重要方法不起作用。我的 JavaScript 代码是:
if ('Notification' in window) {
var messaging = firebase.messaging();
if (Notification.permission === 'granted') {
subscribe();
}
$('#notify').on('click', function () {
subscribe();
});
}
function subscribe() {
// запрашиваем разрешение на получение уведомлений
messaging.requestPermission()
.then(function () {
// получаем ID устройства
return messaging.getToken()
.then(function (currentToken) {
console.log(currentToken);
if (currentToken) {
sendTokenToServer(currentToken);
} else {
console.warn('Не удалось получить токен.');
setTokenSentToServer(false);
}
})
.catch(function (err) {
console.warn('При получении токена произошла ошибка.', err);
setTokenSentToServer(false);
});
})
.catch(function (err) {
console.warn('Не удалось получить разрешение на показ уведомлений.', err);
});
iOS 上的所有浏览器本质上都是 WebKit(Safari 中使用的浏览器引擎)的包装器,因此它们从那里继承了大部分功能和限制。不幸的是,Safari 仍然不支持 Web 推送 API,这是 Firebase 云消息传递所必需的。
另见:
- ReactJS - FCM not working in safari browser
- Firebase Cloud Messaging for web documentation
- caniuse.com page for the push API
Firebase 消息推送通知在桌面和 Android 网络浏览器上没有任何问题,但是当我在 IOS 设备上测试它时,我使用的浏览器、通知和 .getToken() 并不重要方法不起作用。我的 JavaScript 代码是:
if ('Notification' in window) {
var messaging = firebase.messaging();
if (Notification.permission === 'granted') {
subscribe();
}
$('#notify').on('click', function () {
subscribe();
});
}
function subscribe() {
// запрашиваем разрешение на получение уведомлений
messaging.requestPermission()
.then(function () {
// получаем ID устройства
return messaging.getToken()
.then(function (currentToken) {
console.log(currentToken);
if (currentToken) {
sendTokenToServer(currentToken);
} else {
console.warn('Не удалось получить токен.');
setTokenSentToServer(false);
}
})
.catch(function (err) {
console.warn('При получении токена произошла ошибка.', err);
setTokenSentToServer(false);
});
})
.catch(function (err) {
console.warn('Не удалось получить разрешение на показ уведомлений.', err);
});
iOS 上的所有浏览器本质上都是 WebKit(Safari 中使用的浏览器引擎)的包装器,因此它们从那里继承了大部分功能和限制。不幸的是,Safari 仍然不支持 Web 推送 API,这是 Firebase 云消息传递所必需的。
另见:
- ReactJS - FCM not working in safari browser
- Firebase Cloud Messaging for web documentation
- caniuse.com page for the push API