我遇到了一些自己无法解决的问题。
我试图在Rails网站中实现Web推送通知,为实现这一点,我为浏览器添加了gem 'serviceworker-rails', and my service worker was registered property!
I've requested the
currentToken`,我可以像获得魅力一样获得此令牌!
但是,当我使用Firebase API发送消息时。当我的应用程序打开时,我无法捕获通知。当我的应用程序处于未聚焦状态或关闭状态时,有时会显示通知,但永远不会显示请求的标题,正文和图标。
我留下了有关我的代码库的更多信息:
# application.html.erb
...
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/6.2.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.10.1/firebase-messaging.js"></script>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyDJ9H2pHYDNeRClQh2h5K7YBcXXXXXXX",
authDomain: "app-name.firebaseapp.com",
databaseURL: "https://app-name.firebaseio.com",
projectId: "app-name",
storageBucket: "",
messagingSenderId: "323210495XXX",
appId: "1:323210495251:web:71b42ccaXXXXX"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
# firebase-messaging-sw.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/serviceworker.js', { scope: './' })
}
我的文件service-worker.js
是gem serviceworker-rails
的标准,我的服务人员是注册属性。
我尝试设置onMessage
回调,但是此函数从未捕获过消息:(
我已经在onMessage
块中注册了documentReady
:
$(function() {
const messaging = firebase.messaging();
messaging.usePublicVapidKey("BFUCBc8rYLt8RBniXXXXXXXXXXXXXTYVMvdp9ywTU-_Up3VhDhKQylvRXTTpLXXXXXXXX");
messaging.requestPermission().then(function() {
# this works
});
messaging.onMessage(function(payload) {
console.log("Message received. ", payload); # This log was never showed when I've sent a notification
var notification = new Notification(payload.data.title, {
icon: 'https://developers.google.com/accounts/images/webflow.png',
body: payload.data.message,
});
});
});
我使用以下请求来发送推送消息:
POST https://fcm.googleapis.com/fcm/send
Headers:
Content-Type: application/json
Authorization: key=MY_KEY
Body:
{
"to" : "fFPM3CyP0fc:APA91bEU-2AhmjPAukUZM0c_0lqnLqAd6GQkt0GTcZt8gzYEqfQd6_wZs-jU9NPTWH85nvXbeTM5sGnjCGkfOarFRG8dVzQOYKIt4nBT-NikpwRbREEEXOeKGpJqtmd7J1a_Nuxe2zvk",
"notification" : {
"body" : "great mat1ch!",
"title" : "Portugal vs. Denmark",
"icon" : "https://developers.google.com/accounts/images/webflow.png",
"click_action": "https://localhost:3000/"
}
}
有时在应用程序关闭的情况下,会出现一个网络通知,文字为“此应用程序已在第二个计划中进行了更新”,但从未显示我的标题和正文。
打开应用程序后,我无法在onMessage
回调中捕获通知。