使用Google Cloud功能和Google Firebase推送通知

时间:2017-04-16 12:02:40

标签: android firebase firebase-cloud-messaging google-cloud-functions

我有一个使用Firebase的Android 客户端应用程序管理员应用程序。每当用户在客户端应用程序中注册时,我都需要向管理员应用程序发送推送通知。我正在尝试使用Cloud Functions for Firebase。我已经导出了这个函数,我也可以在firebase控制台上看到它。

enter image description here

这是我的 index.js

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);


exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}/{regToken}').onWrite(event => {

  if (event.data.previous.exists()) {
    return;
  }

  const userId = event.params.userId;
  const regToken = event.params.regToken;

  // Notification details.
    const payload = {
      notification: {
        title: 'You have a new User.',
        body: `${userId} is the id.`,
      }
    };
  return admin.messaging().sendToDevice(regToken, payload);
});

这是我在firebase的数据库结构:

enter image description here

如果我使用任何在线门户发送推送甚至FCM发送推送到管理应用程序进行测试,我正在接受推送。但是这个Cloud Function并没有发送推送。有人可以指导我,我做错了什么。

修改

如果我将功能更改为以下内容,则可以正常工作。但我仍然想知道为什么上述功能不起作用。

exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}').onWrite(event => {


  if (event.data.previous.exists()) {
    return;
  }

  const userId = event.params.userId;
  var eventSnapshot = event.data;
  const regToken = eventSnapshot.child("regToken").val();

   Notification details.
    const payload = {
      notification: {
        title: 'You have a new User.',
        body: `${userId} is the id.`,
      }
    };
  return admin.messaging().sendToDevice(regToken, payload);
});

1 个答案:

答案 0 :(得分:1)

在原始代码中,您有:

R.map(double, [1, 2, 3])

const regToken = event.params.regToken; 未返回event.params.regToken的值,而是返回参考中wildcard path segment的值。