Firebase 云消息传递不适用于三星互联网
Firebase Cloud Messaging not working with Samsung Internet
我正在设置 Firebase Cloud Messaging 以在网络上发送推送通知。到目前为止,它仅适用于 Chrome(Windows 和 Android)和 Firefox(Android)。它不适用于 Samsung Internet Browser(三星手机预装的浏览器),到目前为止我还没有机会在 iOS 上进行测试。
我尝试将发件人 ID 作为 gcm_sender_id
添加到我正在使用的 Cloud Function 以及 manifest.json
文件中,但都无济于事。以下是通知主体的设置方式。
// Create notification content
const notification = admin.messaging().Notification = {
title : 'My test Title',
body : `Lorem Ipsum Dolor`,
};
const payload = admin.messaging().Message = {
notification,
webpush:{
notification : {
vibrate: [200, 100, 200],
icon: 'https://www.goodhousekeeping.com/life/pets/g4531/cutest-dog-breeds/', //A random dog photo
fcm_options: {
link: 'https://www.youtube.com',
gcm_sender_id : '<SENDER_ID>',
},
},
},
topic: '<TOPIC>'
};
//Send notification
return admin.messaging().send(payload);
有什么办法可以让它在 Samsung Internet 上运行吗? Service Worker 从 v4 开始支持,设备有 v9。应该注意的是,即使在接收它的设备上,当我点击它时,它也不会打开我在 fcm_options
中设置的网站,也不会遵循振动模式,但会加载图标。
更新:截至 2020 年 4 月,FCM 与 iOS Chrome 和 Safari
完全不兼容
所以我知道这可能没有帮助,但它 'magically' 今天开始起作用了。浏览器版本为Samsung Internet v10.
firebase-消息传递-sw.js
// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/7.13.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.13.2/firebase-messaging.js');
// Initialize the Firebase app in the service worker by passing in
// your app's Firebase config object.
// https://firebase.google.com/docs/web/setup#config-object
firebase.initializeApp({
apiKey: '',
authDomain: '',
databaseURL: '',
projectId: '',
storageBucket: '',
messagingSenderId: '',
appId: '',
measurementId: ''
});
// Retrieve an instance of Firebase Messaging so that it can handle background
// messages.
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(payload => {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification
const notificationTitle = payload.data.title;
const notificationOptions = {
body: payload.data.body,
priority: payload.data.priority,
vibrate: payload.data.vibrate,
icon: payload.data.icon,
click_action: payload.data.link,
link: payload.data.link
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
//Open browser window or focus it if it is open on notification click
self.addEventListener('notificationclick', function(event) {
event.notification.close();
event.waitUntil(self.clients.openWindow('www.yourwebsitehere.com'));
});
云功能发送通知
//Sends notifications to users when the statistics document is updated
exports.sendNotifications = functions.firestore.document('restaurant/statistics').onUpdate(async (snapshot,context) =>{
//Get updated document data
const updatedData = snapshot.after.data();
const payload = admin.messaging().Message = {
data: {
title: updatedData.title,
body : updatedData.body,
icon: updatedData.icon,
link: updatedData.link,
vibrate: "[300, 200, 300]",
priority: "high"
},
topic: 'statistics'
}
return admin.messaging().send(payload);
});
我正在设置 Firebase Cloud Messaging 以在网络上发送推送通知。到目前为止,它仅适用于 Chrome(Windows 和 Android)和 Firefox(Android)。它不适用于 Samsung Internet Browser(三星手机预装的浏览器),到目前为止我还没有机会在 iOS 上进行测试。
我尝试将发件人 ID 作为 gcm_sender_id
添加到我正在使用的 Cloud Function 以及 manifest.json
文件中,但都无济于事。以下是通知主体的设置方式。
// Create notification content
const notification = admin.messaging().Notification = {
title : 'My test Title',
body : `Lorem Ipsum Dolor`,
};
const payload = admin.messaging().Message = {
notification,
webpush:{
notification : {
vibrate: [200, 100, 200],
icon: 'https://www.goodhousekeeping.com/life/pets/g4531/cutest-dog-breeds/', //A random dog photo
fcm_options: {
link: 'https://www.youtube.com',
gcm_sender_id : '<SENDER_ID>',
},
},
},
topic: '<TOPIC>'
};
//Send notification
return admin.messaging().send(payload);
有什么办法可以让它在 Samsung Internet 上运行吗? Service Worker 从 v4 开始支持,设备有 v9。应该注意的是,即使在接收它的设备上,当我点击它时,它也不会打开我在 fcm_options
中设置的网站,也不会遵循振动模式,但会加载图标。
更新:截至 2020 年 4 月,FCM 与 iOS Chrome 和 Safari
完全不兼容所以我知道这可能没有帮助,但它 'magically' 今天开始起作用了。浏览器版本为Samsung Internet v10.
firebase-消息传递-sw.js
// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/7.13.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.13.2/firebase-messaging.js');
// Initialize the Firebase app in the service worker by passing in
// your app's Firebase config object.
// https://firebase.google.com/docs/web/setup#config-object
firebase.initializeApp({
apiKey: '',
authDomain: '',
databaseURL: '',
projectId: '',
storageBucket: '',
messagingSenderId: '',
appId: '',
measurementId: ''
});
// Retrieve an instance of Firebase Messaging so that it can handle background
// messages.
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(payload => {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification
const notificationTitle = payload.data.title;
const notificationOptions = {
body: payload.data.body,
priority: payload.data.priority,
vibrate: payload.data.vibrate,
icon: payload.data.icon,
click_action: payload.data.link,
link: payload.data.link
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
//Open browser window or focus it if it is open on notification click
self.addEventListener('notificationclick', function(event) {
event.notification.close();
event.waitUntil(self.clients.openWindow('www.yourwebsitehere.com'));
});
云功能发送通知
//Sends notifications to users when the statistics document is updated
exports.sendNotifications = functions.firestore.document('restaurant/statistics').onUpdate(async (snapshot,context) =>{
//Get updated document data
const updatedData = snapshot.after.data();
const payload = admin.messaging().Message = {
data: {
title: updatedData.title,
body : updatedData.body,
icon: updatedData.icon,
link: updatedData.link,
vibrate: "[300, 200, 300]",
priority: "high"
},
topic: 'statistics'
}
return admin.messaging().send(payload);
});