当前位置: 首页 > 知识库问答 >
问题:

Firebase功能错误,因此设备到设备通知被卡住

邬宜然
2023-03-14

我刚刚接触到Firebase函数,最初一切正常,但现在我面临以下错误。我在下面提供错误和我的代码。

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

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
exports.sendNotification = functions.database.ref('/Notification/{user_id}/{notification_id}').onWrite(event =>{

  const user_id = event.params.user_id;
  const Notification = event.params.Notification;

  console.log('We have a Notification to send to :', user_id);

  if (!event.data.val()) {

    return console.console.log('A Notify has been deleted from the database :', notification_id);

  }

  const devicetoken = admin.database().ref(`/Users/{user_id}/device_token`).once('value');

  return devicetoken.then(result =>{

    const token_id = result.val();


    const payload = {
      notification: {
        title : "Follower Request",
        body: "You've received a new friend request",
        icon: "default"
      }
    };

    return admin.messaging().sendToDevice(token_id, payload).then(response =>{

      console.log('This was the notification Feature')

    });


  });


});

下面是我在Firebase函数中收到的错误。

错误:提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在FirebaseMessagingeror。FirebaseMessagingError出现错误(本机)。FirebaseError[作为构造函数](/user_code/node_modules/firebase admin/lib/utils/error.js:39:28)位于FirebaseMessagingeror。在新的FirebaseMessagingError(/user_code/node_modules/firebase admin/lib/utils/error.js:85:28)的消息传递中,使用prefixedFrebeSeError[作为构造函数](/user_code/node_modules/firebase admin/lib/utils/error.js:207:16)。在消息传递中验证注册KenStype(/user_code/node_modules/firebase admin/lib/messaging/messaging.js:589:19)。在devicetoken上发送设备(/user_code/node_modules/firebase admin/lib/messaging/messaging.js:210:14)。然后进程中的结果(/user_code/index.js:36:30)_tickDomainCallback(内部/process/next_tick.js:135:7)

上述错误的firebase函数图像

图片提供了我如何存储设备\u令牌\u id的想法

任何帮助都将不胜感激。

共有1个答案

别永年
2023-03-14

您没有在某些地方使用模板标签${}

还要确保您要发送通知的用户在Firebase中存储了有效的device_token

实施这些更改和更新方法后的最终代码是:

'use strict'

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

exports.sendNotification = functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite((change, context) => {

  const user_id = context.params.user_id;
  const notification_id = context.params.notification_id;

  console.log('We have a notification to send to : ', context.params.user_id);

  if(!change.after.val()) {
      return console.log('A Notification has been deleted from the database : ' + context.params.notification_id);
  }

  const deviceToken = admin.database().ref(`/Users/${user_id}/device_token`).once('value');

  return deviceToken.then(result =>  {

    const token_id = result.val();

    const payload = {
        notification: {
            title : "Follower Request",
            body: "You've received a new friend request",
            icon: "default"
        }
    };

    return admin.messaging().sendToDevice(token_id, payload).then(response => {
        return console.log('This was the notification Feature');  
    });

  });

});

对于所有提到TVAC Studio的Lapit聊天应用程序教程的人,我提到了上述更改的答案https://stackoverflow.com/a/49746976/7549743

 类似资料:
  • 我成功地集成了firebase。当我仅出于测试目的使用firebase站点的云消息发送通知时,设备会收到通知。但在我的应用程序中,我需要使用firebase从一台设备向另一台设备发送通知。。如何实现这一点。Swift 4,Xcode 10以下是一些代码:

  • 我对FireBase云消息有一个问题,我从设备中获取令牌,并通过Google FireBase通知控制台发送通知测试。但是,通知从来没有被记录,也没有被推送到android虚拟设备。FCM的文档几乎与下面的代码完全相同,其他代码很少,您还需要做什么来获得使用FireBase的推送通知。我已经完成了所有的设置信息(build.gradle添加、安装google play服务等)如文档中所指定的,但仍

  • 我试图弄清楚Firebase如何连接到特定设备并向其发送消息。我现在如何使用Firebase和从我的后端服务器向注册的设备发送通知,但我不知道它是如何在内部工作的。firebase服务器是否使用设备和服务器之间的持久连接?它用的是什么技术? 目前,我最感兴趣的是Android设备,以及firebase如何唤醒设备,即使有后台任务限制。

  • 我在项目中使用Firebase身份验证。今天我决定将FCM集成到我的项目中。但是我无法从我的Firebase控制台收到任何通知。我还尝试重新下载. json文件,但没有成功。你们知道我的问题吗? Android清单.xml FirebaseMessageService.java FirebaseIDService.java 我认为这个问题不是由我的MainActiviy.java决定的,但以防万一

  • 我关掉了又打开了我手机的Wifi,然后手机就收到了那些通知。我在模拟器上打开和关闭平面模式,然后模拟器收到这些通知。我的应用程序有问题吗?还是用火力点?(我已经使用权限)。有什么建议吗? 谢谢!

  • 我已经更新到Xcode 12.3 beta。设备版本是14.2,但Xcode抱怨: 准备设备进行开发时遇到错误。请检查“设备和模拟器”窗口。 无法为开发准备设备 iPhone直接连接到MacBook。我在网上尝试了所有的胡言乱语。但是没有成功,你知道吗? 无法为开发准备设备 请检查到设备的连接,并检查设备和模拟器窗口中的所有错误。