Firebase云消息传递不适用于Rails

时间:2019-08-07 13:04:57

标签: ruby-on-rails firebase firebase-cloud-messaging push

我遇到了一些自己无法解决的问题。 我试图在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.jsgem 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回调中捕获通知。

0 个答案:

没有答案