如何为 React Native Expo 安排推送通知?

2023-08-02前端开发问题
41

本文介绍了如何为 React Native Expo 安排推送通知?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在尝试在预定时间向用户发送推送通知.假设他们设置了事件的日期,并且希望在 30 分钟前收到通知,也就是我想向他们发送通知的时间.我使用 firebase 作为后端,项目是用 expo 构建的.

I am trying to send push notifications to a user at a scheduled time. Say they set the date for an event and they want to be notified 30 minutes before, that is when I would like to send them a notification. I am using firebase as my backend and the project is built with expo.

我很好奇如果我使用 firebase 云消息传递,我将如何使用 expo 的通知系统,因为它说我需要来自 firebase 的单独许可(我已经为每个用户拥有了 expo 令牌).我已经研究了节点 cron/schedule 以及 react-native 推送通知,但我不确定哪个是最好的解决方案以及我将在哪里部署解决方案(例如运行云功能).

I am curious how I would use expo's notification system if I am using firebase cloud messaging because it says I need separate permission from firebase (I already have the expo token for each user). I have looked into node cron/schedule and also react-native push notification but I am unsure which would be the best solution and where I would deploy the solution (such as running a cloud function).

我假设我需要某种类型的函数来获取令牌、消息正文、标题和日期,然后将其设置为将其安排到服务器或本地.然后当他们按下按钮接收通知时,就会调用该函数.他们还可以更改事件的日期,因此如果用户这样做,则需要切换日期.

I assume I need some type of function that takes the token, message body, title, and date and then sets it up to schedule it either to the server or locally. And then that function would be called when they press the button to receive the notification. They can also change the date of the event so it would need to switch the date if the user did that.

任何建议都将不胜感激,因为我已经研究了几天,但仍然不确定最佳方法.

Any advice would be greatly appreciated as I have been researching this for days and still am unsure of the best approach.

推荐答案

一种可能的方法:

  1. 在您的后端,安排一个每分钟(或每 15 秒)运行一次的 cron 作业,并检查数据库中哪些事件的开始时间在接下来的 30 分钟内.

  1. In your backend, schedule a cron job that runs every minute (or every 15 seconds) and checks against database which events have start time within next 30 mins.

获得事件后,找出为这些事件注册的用户并收集他们的用户ID.

Once you have the events, find out the users registered for those events and collect their user ids.

正如您提到的,您已经存储了令牌,所以我假设这些令牌存在于某个针对用户 ID 的表中.(例如 user-idtokens 的映射).查找此表以获取这些用户的令牌.

As you mention that you already have stored the tokens, so I assume that those tokens exist in some table against the user id. (e.g. mapping of user-id and tokens). Look up this table to fetch the tokens of those users.

准备通知 payload 并调用 firebase 消息以针对令牌发送通知.例如,此时您可以调用 Firebase SDK 中的 sendToDevice() 函数:firebase.messaging().sendToDevice(tokens, payload);

Prepare the notification payload and call firebase messaging to send notification against the token. For example, at this point you can call the sendToDevice() function from Firebase SDK: firebase.messaging().sendToDevice(tokens, payload);

现在您可以在后端(例如 Nodejs)中实施这些步骤,或者您可以为此部署云功能并设置 调度这个云函数.

Now you can implement these steps in your backend (e.g. Nodejs) or you can deploy a cloud function for this and setup scheduling for this cloud function.

如果您需要任何进一步的帮助,请告诉我!

Let me know if you need any further help!

这篇关于如何为 React Native Expo 安排推送通知?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

js删除数组中指定元素的5种方法
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22 前端开发问题
182

JavaScript小数运算出现多位的解决办法
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18 前端开发问题
301

JavaScript(js)文件字符串中丢失"\"斜线的解决方法
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17 前端开发问题
437

layui中table列表 增加属性 edit="date",不生效怎么办?
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11 前端开发问题
455

Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20 前端开发问题
5

CoffeeScript 总是以匿名函数返回
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20 前端开发问题
13