首页
学习
活动
专区
圈层
工具
发布

使用firebase云函数从Firebase发送推送通知

基础概念

Firebase Cloud Functions(云函数)是 Firebase 提供的无服务器计算服务,允许开发者在云端运行后端代码,无需管理服务器基础设施。结合 Firebase Cloud Messaging (FCM),可以通过云函数在特定事件(如数据库变更、用户注册等)触发时自动发送推送通知。

优势

  1. 无服务器架构:无需管理服务器,自动扩展。
  2. 事件驱动:响应 Firebase 事件(如数据库写入、用户认证)。
  3. 集成 FCM:直接调用 FCM API 发送推送通知。
  4. 成本效益:按实际执行次数和资源消耗计费。

实现步骤

1. 初始化 Firebase 项目

确保已安装 Firebase CLI 并初始化项目:

代码语言:txt
复制
npm install -g firebase-tools
firebase login
firebase init functions

2. 安装依赖

functions 目录下安装 firebase-admin

代码语言:txt
复制
cd functions
npm install firebase-admin

3. 编写云函数

以下是一个示例代码,当 Firestore 文档创建时发送推送通知:

代码语言:txt
复制
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendNotificationOnNewPost = functions.firestore
  .document('posts/{postId}')
  .onCreate(async (snapshot, context) => {
    const postData = snapshot.data();
    const userId = postData.userId;

    // 获取用户的 FCM 令牌(假设存储在 Firestore 的 'users' 集合中)
    const userDoc = await admin.firestore().doc(`users/${userId}`).get();
    const fcmToken = userDoc.data().fcmToken;

    if (!fcmToken) {
      console.log('No FCM token found for user:', userId);
      return null;
    }

    // 构造通知消息
    const message = {
      notification: {
        title: 'New Post',
        body: `A new post was created: ${postData.title}`,
      },
      token: fcmToken,
    };

    // 发送通知
    try {
      await admin.messaging().send(message);
      console.log('Notification sent successfully');
    } catch (error) {
      console.error('Error sending notification:', error);
    }
  });

4. 部署云函数

代码语言:txt
复制
firebase deploy --only functions

常见问题及解决

1. FCM 令牌无效或过期

  • 原因:用户可能卸载应用或令牌被刷新。
  • 解决:定期更新 Firestore 中的令牌,或在发送前检查令牌有效性。

2. 权限不足

  • 原因:未正确初始化 firebase-admin 或服务账号缺少权限。
  • 解决:确保 admin.initializeApp() 已调用,且服务账号具有 cloudmessaging.messages.create 权限。

3. 通知未触发

  • 原因:云函数未正确绑定事件或部署失败。
  • 解决:检查 Firebase 控制台的日志,确认函数已部署且监听正确的事件路径。

应用场景

  1. 社交应用:新评论、点赞时通知用户。
  2. 电商平台:订单状态更新时通知买家。
  3. 实时协作工具:文档变更时通知协作者。

扩展功能

  • 多平台支持:通过 topiccondition 发送给多设备。
  • 数据驱动通知:动态生成通知内容(如用户名、订单号)。
  • 异步处理:使用 Promise.all 批量发送通知。

注意事项

  • 冷启动延迟:云函数首次调用可能有延迟,可通过保持实例活跃优化。
  • 配额限制:FCM 有发送速率限制,需合理设计触发频率。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何从Django应用程序发送Web推送通知

该 send_push 视图将使用Django-Webpush库发送包含用户在主页上输入的数据的推送通知。...如果用户不存在,该函数将返回404错误。 该视图还使用了webpush库中的send_user_notification函数。该函数有三个参数: User:推送通知的收件人。...接下来,您将在主页上设置表单以发送推送通知。 第9步 - 发送推送通知 使用主页上的表单,用户应该能够在服务器运行时发送推送通知。您还可以使用Postman等任何RESTful服务发送推送通知。...当用户从主页上的表单发送推送通知时,数据将包括head和body以及接收用户的id。...您已经创建了一个Web应用程序,可以在服务器上触发推送通知,并在服务工作者的帮助下接收并显示通知。您还完成了获取从应用程序服务器发送推送通知所需的VAPID密钥的步骤。

11.2K115
  • Android Firebase 服务简介

    早在2014年,谷歌收购了Firebase,这主要是一种面向应用程序开发人员的数据库。Firebase基本上向广大的应用程序开发人员提供不同的服务,比如存储、消息传递、通知和身份验证等服务。...二、开发 云消息传递(Firebase Cloud Messaging) 可以通过后台服务向用户推送消息,对于即时通讯等用例,一条消息可以将最大 4KB 的负载传送至客户端应用。...实时数据库(Firebase Realtime Database) 云托管 NoSQL 数据库,数据为JSON形式,设备离线可以使用数据,具有同步功能,恢复链接时可以上传回服务器。...三、增长 通知(Firebase Notifications) 细分受众,轻松管理推送信息 索引(Firebase App Indexing) Firebase App Indexing(其前身为 Google...邀请(Firebase Invites) Firebase Invites 是用于发送个性化电子邮件和短信分享应用 在线广告(Google AdWords) 优化广告,促成安装,获取广告转化率的深入数据分析

    27.1K90

    与 FireBase 亲密接触

    其旨在为移动和Web应用提供后端云服务,包括云端数据/文件存储、账户管理、消息推送、社交媒体整合等。国内比较出名的厂商有友盟、BMob等,国外就 Firebase 名气比较大。...从单一信息中心查看用户行为和衡量行为特性。 Firebase Cloud Messaging(FCM):是一个跨平台Android、iOS 和网站的解决方案,供我们免费可靠地发送和接收消息和通知。...数据存储为 JSON,以毫秒速度跨连接设备同步,当您的应用处于离线状态时可以使用该数据。 Storage:直接从 Firebase 客户端 SDK 存储和检索用户生成的内容,如图片、音频和视频。...Test Lab:Firebase Test Lab for Android 提供了基于云的基础结构,用于测试 Android 应用。...Notifications:轻松管理通知活动。安排和发送消息,以便在最适当的时间吸引合适的用户。

    19.3K00

    Firebase Remote Config

    什么是 Firebase Remote Config Firebase Remote Config 是一项云服务,可以更改 APP 的响应,而无需用户更新 APP。...如果从后端获取到某个值,APP 则使用该值 可以直接使用应用内的默认值 如果没有设置默认值,则会获取静态类型值(例如,对于 int,使用 0,对于 boolean,使用 false) 参数组...框,当收到回调或通知时取消 loading 框 使用此策略,建议添加超时。...务必设置应用内默认参数值,确保应用始终按预期运行 实时传播 Remote Config 更新 与远程推送相结合 步骤 APP 订阅主题(以主题的形式给部分用户发送远程通知,如果需求不区分用户群,直接发全部用户的远程通知即可...服务器推送通知,携带信息中包含提示让用户更新 Remote Config 状态的信息 在客户端设置 Remote Config 状态 接收到推送通知后,设置本地现有 Remote Config 为旧版

    4K11

    我们能用云函数做什么?

    前言 本文以Firebase为例,因为腾讯云的云函数正在内测,还没申请到。...Firebase以独特的方式使用云函数来满足其独特需求,典型运用的领域: 当发生了一些新奇有趣的事情通知用户 执行实时的数据库清理和维护 在云上执行密集的任务,而不是在本地的应用程序上 与第三方的服务和...在这样的程序中,由实时数据库触发的写入功能以存储新的关注者可以创建Firebase的云消息通知,让用户知道他们的粉丝数又增加了。...下面是它的工作原理图: 该函数在对实时的数据库路径写入了相关信息,存储粉丝 该函数通过向FCM(Google的推送服务)发送消息 FCM向用户的设备发送通知消息 YingJoy 其它通知的用例 向订阅...该函数将提供一个Team Slack API 来发送提交的通知。

    19.4K40

    FCM---Android系统级推送---你还在用第三方推送?

    Sending a message:发送消息到手机的第三方程序服务器。 Receiving a message:从GCM服务器接收消息的Android程序。...此应用服务器通过选定的FCM连接服务器,使用合适的 XMPP 或 HTTP 协议向客户端应用发送数据。...您可以发送带有预定义字段的通知消息或自定义数据消息;请参阅消息负载中的通知和数据,了解关于负载支持的详细信息。本页中的示例用于说明如何通过 HTTP协议发送数据消息。...通知 要发送通知,可设置 notification 键并针对通知消息的用户可见部分设置必要的预定义键选项集。 例如,这是 IM 应用中的 JSON 格式的通知消息。...当应用在后台或者被杀掉的时候,这个函数是不会响应的,它会直接吧参数发送到启动的Activity中,以下是google的文档说明: Handle messages in a backgrounded app

    14.6K30

    React Native推送通知:完整的操作指南

    在这篇文章中,我们将看到如何在React Native应用中创建和发送推送通知。 什么是推送通知? 推送通知是从应用程序发送到已安装该应用的用户的消息或警报。...原生平台特定的通知服务(FCM/APNs) Android和iOS平台都提供了用于接收推送通知的原生平台特定API 适用于安卓设备的Firebase云消息传递(FCM) 苹果推送通知服务(APNs)适用于...React Native Firebase 库也提供了一种通过 FCM 在iOS上发送推送通知的方法。...可以从Node.js服务器通过 firebase-admin 和 node-apn 向注册的移动设备发送远程通知 Expo推送通知和其他云服务 FCM 和 APNs 都是特定平台的原生推送通知服务。...我们还学习了如何在 React Native 应用程序中发送推送通知,方法是添加通知令牌,从服务器发送它们,并使用 Expo 通知 API 在用户设备上显示它们。

    5.7K10

    使用云函数每天定时向女朋友发送邮件推送天气

    well-known/ [情人节快乐] 这里以qq邮箱举例子 [情人节快乐] [情人节快乐] 在创建的公共模块index.js中 [情人节快乐] [情人节快乐] 这里的pass就是授权码 然后上传公共模块 云函数调用...新建云函数 [情人节快乐] 右键usemail文件夹 选择管理公共模块依赖 [情人节快乐] 这里改为 [情人节快乐] 根据文档 https://nodemailer.com/message/ [情人节快乐...]发送的邮件格式如下 如果发送文本邮件则使用text 发送html邮件则使用html 也可以综合 发送文本邮件 [情人节快乐]我们让他返回 [情人节快乐] 文档中这样说 所以我们先返回这个看看是否成功以及返回的参数...[情人节快乐] 记得上传云函数 这里我们先不定时 来测试下效果 我们在控制台 https://unicloud.dcloud.net.cn 找到云函数 点击进入云函数管理 编辑云函数url化 [情人节快乐...] [情人节快乐] 这里返回了 [情人节快乐] 这里也收到了邮件 [情人节快乐] 哈哈哈 发送html 我门来写个模板 既然要推送天气 那就做个和天气有关的 [情人节快乐] html: `

    1.7K00

    做什么样的软件系列之Firebase

    、推送、支付、实时通信等。...其中Firebase就是云后端服务的平台之一。 通过firebase学习 做完一个刚入行的app开发或者后端开发你可能不知道该学什么,这个时候我建议你通过观察firebase的功能进行学习。...我在使用firebase的时候发现公司后端开发开发的很多功能和firebase是基本重合的。登陆注册,数据统计,存储,接口开发,等等。firebase涵盖了大部分app与后端的基础功能。...firebase其实就是这样一个引路人,通过firebase的功能我们能熟悉一个前端或一个后端开发的工作。用户认证模块,数据存储模块,通知推送模块,广告模块,数据统计模块 崩溃收集模块,云控模块。...都是很好的问题 云服务 我们都在讲云服务,云计算。但是什么样的是云服务?我觉得firebase就是一项很好的服务范例。我们可以学习他的后台,ui等等。

    5.3K40

    java微服务架构有哪些_漂浮服务区后端

    它提供广泛的客户端支持,与主要的企业数据库整合,还提供后端数据存储区、文件存储区、推送通知、移动分析、iBeacon支持以及在后端运行自定义代码的功能。...除了使用标准的JavaScript和外部服务外,它还可以使用Kinvey API实现众多功能,比如日志、访问组合、发送推送通知、发送电子邮件、验证请求、日志和时间功能、异步处理、显示Mustache模板以及获取后端上下文...云代码可以在驻留在处理钩子的函数和自定义端点中。云代码在Kinvey中实现内部版本控制。 数据存储 Kinvey组合使用MongoDB,MongoDB提供了供应用程序使用的无模式、非SQL数据库。...支持富媒体的消息推送 以透传的方式将开发者自定义的内容发送到开发者的用户客户端,支持图片、视频、音频、网址等富媒体推送。让你可以用户丰富的形式刺激开发者的用户活跃度。...从国外和国内的BaaS发展来看,BaaS是目前云计算发展较为迅速的领域,代表着新一代的云服务。互联网巨头和新兴技术创业公司都积极投身于此,我们也将持续关注该领域的发展。

    8.6K20

    集成推送那点事-友盟Mob-FlutterFCM

    下面从我个人关注的几个维度进行简单的对比 (❌:代表不支持,✅:代表支持。特殊情况单独注明): ? 对于小司而言,价格是一个重点,真的贼羡慕动不动就开通 VIP 或者 Pro 的小伙伴,酸了。...apply from: 'UMeng_Push.gradle' 1.2 初始化友盟推送并设置通知栏点击动作 在 Application 中进行友盟推送的初始化以及点击通知栏后操作: private...} 很多时候我们都希望,即使用户当前未使用 App,或者说当前的 App 处于被杀死的状态,后台推送消息依然想被前台接收。...若使用一键清理,应用的channel进程被清除,将接收不到推送。通过接入托管弹窗功能,可有效防止以上情况,增加推送消息的送达率。...eventBus 发送状态去执行数据更新操作了。

    13.3K41

    Firebase太贵?2025年8月最香平替——腾讯云开发CloudBase实战指南

    一、为什么开发者开始逃离Firebase 2025年7月起,Firebase Spark档免费额度被腰斩:Cloud Firestore每日读取从5万次降至2万次;超出即按量计费,美区单价同步上涨15%...ms 实时能力 Firestore实时监听 Postgres WAL实时 云数据库实时推送...2025-08-13;Firebase/Supabase官网2025-08-12抓取) 三、腾讯云开发CloudBase 2025年8月核心能力速览 云数据库:文档型,支持事务、聚合、索引;实时推送单通道...云存储:内置CDN+图片压缩+WebP自适应;海外回源额外计费的“坑”直接归零。 云函数:Node、Python、Go多运行时,冷启动<100 ms,支持GPU型实例跑AI推理。...五、限时活动(2025年8月13日更新) 新用户0元试用30天,额外再送100万次云函数调用。 老用户年付个人版立减20%,到手79元/年。 企业版首购3折起,再送1v1架构师咨询。

    19800

    从零开始的Devops-通用服务平台解决方案思考

    #目标 支持多平台:h5,iOS,安卓,小程序等 提高可复用性和可靠性:不用重复开发短信验证,登陆,注册,推送等功能。 汲取成熟:规范接口定义,汲取成熟的方案。...BaaS代表第二代云服务,相对于AWS、阿里云等公有云(IaaS,PaaS)是第一代云服务,通过广泛部署云数据中心解决了开发和运维系统不需要管理服务器的问题,BaaS则在第一代公有云数据中心基础之上,对云计算资源进一步封装...可以让用家有效管理及设定他们的应用和发送提示等等。 灵活存取 用家不用发送同样的存取请求。...用家可以事先设定好具重覆性的要求,当Parse Server 侦测到有相关数据改动的时候则会自动发送予用家。...使用闭源解决方案可能形成对供应商的依赖,对相关开发sdk进行绑定。 2. 使用开源解决方案,在面对平台问题和自定义问题的时候,解决比较困难。 3. 对于一些功能较复杂的需求就不太适合。 4.

    12.2K10

    unicloud使用云函数每天定时向女朋友发送邮件推送天气

    虽然很想做定时发送短信的 可惜签名还没审核过 审核过了会写一篇 本文章 后续会出一篇 管理邮件推送信息的小后台讲解 代码已放置github https://github.com/dmhsq/uniCloud-demo...云函数调用 发送文本邮件 发送html 更多用法 推送天气 获取天气 发送邮件 定时触发 制作公共模块 命令窗口打开 执行 npm install nodemailer 这里 可以删除 node_modules...在创建的公共模块index.js中 这里的pass就是授权码 然后上传公共模块 云函数调用 新建云函数 右键usemail文件夹 选择管理公共模块依赖 这里改为...根据文档 https://nodemailer.com/message/ 发送的邮件格式如下 如果发送文本邮件则使用text 发送html邮件则使用html 也可以综合 发送文本邮件...找到云函数 点击进入云函数管理 编辑云函数url化 这里返回了 这里也收到了邮件 哈哈哈 发送html 我门来写个模板 既然要推送天气 那就做个和天气有关的 html

    1.9K21

    剑指 Firebase ,云开发—— 腾讯云的小 B 战略能行么?

    消息推送的服务 GCM (Google Cloud Messageing ) 被 Firebase 收归旗下,并更名为 FCM (Firebase Cloud Messageing )。...可惜的是,今年的 3 月 16 日,其官方在公众号 ThinkWild 商发布了通知,因为资金问题停止了新用户的注册,也会在后续用户完全迁出后,停止服务。...[puuq1.jpg] 云开发这一次的设计就显得成熟了许多,不再整合传统的云服务器、负载均衡等产品,而是直接使用云函数,并辅以 MongoDB 、对象存储,通过封装后为用户提供服务,让开发者可以更加容易的完成自己的开发工作...[sbdug.jpg] 从其官网可以看到,云开发目前提供的小程序 SDK 是其整个体系的一部分,后续,还会为开发者提供更多的服务,除了文件管理、数据管理、函数服务、静态服务以外,还会逐渐提供触发器、用户管理...从对手来看,**云开发的对手只有 Firebase ,云开发未来的完全体,也会是 Firebase 。

    10K40

    安卓跟苹果推信技术怎么来实现发送短信技术多呢?《RCS》《IM》

    在安卓(Android)和苹果(iOS)设备之间实现短信发送技术主要包括两种方式:RCS (Rich Communication Services) 和 IM (Instant Messaging) 服务...自2023年起,苹果宣布将会支持RCS标准,这意味着未来iPhone用户可以与Android用户通过运营商网络直接使用类似iMessage的增强型短信功能进行沟通,无需安装额外的应用程序。...在Android和iOS平台上开发IM应用时,通常会采用云服务和客户端SDK的方式实现消息推送。...例如:GCM/FCM (Google Firebase Cloud Messaging):对于Android设备,开发者可以使用Google提供的Firebase Cloud Messaging服务,即使应用程序未运行或后台被清理时...,也能接收到推送通知。

    1.6K10

    Firebase In-App Messaging 应用内消息

    什么是应用内消息 借助 Firebase In-App Messaging,可以向应用的活跃用户发送有针对性、且符合情景的消息来鼓励他们使用关键应用功能,从而吸引这些用户。...iOS、Android、flutter 集成,详情可见 注意: 发送测试消息,为节省能耗,Firebase In-App Messaging 每天仅从服务器检索一次消息。...iOS、Android、flutter 相关处理,详情可见 In-App Messaging 用途 通过 Firebase 控制台可以修改消息的样式、定位和推送时间 Firebase In-App Messaging...使用链接处理程序 可以使用 Firebase Dynamic Links。...使用 Firebase 控制台向消息添加操作 修改卡片、按钮文字、按钮操作、图片等等 Snip20230915_32.png 修改消息的外观和风格 iOS、Android、Flutter,详情可见

    2.3K10
    领券