如何检查 FCM 消息的状态?

6
我该如何通过 FCM 接收消息已被接收的确认信息?我有一个渐进式 Web 应用程序,它会检查用户是否将 FCM 令牌存储在数据库中,如果是,则使用 FCM;如果未存储,则使用 Twilio 发送短信。问题是,即使浏览器关闭,消息也会排队等待重新打开浏览器,但是仍会记录“成功发送 fcm 消息”。我该如何知道用户实际上收到了消息,并且没有被卡在队列中?如果 Chrome 已经关闭,我希望短信能够立即发送。
const functions = require('firebase-functions');
const admin = require('firebase-admin');

const serviceAccount = require('./service-account.json');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: `https://${process.env.GCLOUD_PROJECT}.firebaseio.com`
});

function sendFCM(uid, title, body) {
  const payload = {
    notification: {
      title: title,
      body: body,
      click_action: "https://www.google.com"
    }
  };

  const payloadOptions = {
    timeToLive: 0
  };

  getUserDetails(uid).then((details) => {
    if (details.fcmToken !== undefined) {
      // send fcm message
      return admin.messaging().sendToDevice(details.fcmToken, payload, payloadOptions)
        .then(response => {
          console.log("Successfully sent fcm message");
        })
        .catch((err) => {
          console.log("Failed to send fcm message");
          return sendSMS(details.phone_number, body);
        });;
    } else {
      console.log("No fcm token found for uid", uid);
      return sendSMS(details.phone_number, body);
    }
  })
}
1个回答

3
目前FCM没有提供API或响应的任何部分,告诉您消息当前是否在队列中或已经发送。
但是,您可以利用交付收据(注意:实现交付收据需要XMPP连接协议)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接