如何在React Native中实现应用程序关闭时的推送通知

5

我现在正在学习React Native,并尝试弄清楚如何在应用程序关闭时启用接收推送通知,就像Facebook一样。

我是一名Web开发人员,所以不习惯移动应用程序的“清单”逻辑。我应该从哪里开始?谢谢!


这是有关编程的内容,请将其从英语翻译成中文。仅返回已翻译的文本:它在react-native页面上有记录。https://facebook.github.io/react-native/docs/pushnotificationios.html和https://medium.com/differential/how-to-setup-push-notifications-in-react-native-ios-android-30ea0131355e - Rei Dien
我已经找到了那个页面,但我的意思是,即使应用程序关闭(不在后台),我也希望能收到通知,因此需要一个始终保持唤醒状态的服务来监听该通知的手机应用程序 :) - Michele Stieven
如果您的应用程序已退出/终止,则通知将不可用。它需要在后台运行才能使用此类服务,否则您可能无法理解自己的问题。 - Rei Dien
大多数社交应用程序都具有“保持唤醒”功能,即使关闭也可以运行。这是您在手机设置中控制的功能(有一个选项名为“允许在后台保持唤醒的应用程序”)。这就是我所说的后台,我不是指导航到另一个应用程序或主屏幕的操作! - Michele Stieven
1个回答

8
似乎因为您是一位Web开发人员,移动应用程序还不太熟悉。实际上,设置推送通知将需要一些官方步骤(在iOS和Android上有所不同),并且在设置完成后,推送通知将在Apple服务器(或Google服务器)和智能手机的操作系统(iOS或Android)之间进行,因此推送通知将无论如何都会到达手机(不需要知道/关心您的应用程序是否打开或关闭^^)。
在我们应用程序的编程代码中,当通知到达时,我们可以根据两种情况处理逻辑: 用户正在使用应用程序应用程序未运行(未运行意味着用户没有使用您的应用程序,而是在后台保持唤醒状态或者已完全退出——例如,在iPhone上按Home按钮两次,并向左滑动应用程序)。
实际上,如果您希望您的应用程序保持唤醒状态,您可以向“清单”文件(当然在iOS和Android上各不相同)添加一些设置。然而,我的经验告诉我,保持应用程序唤醒状态会导致用户抱怨并删除我们的应用程序(我的先前应用程序的用户曾经抱怨说他的iPhone电池大量消耗是因为我的应用程序^^)。
如果您真的想让您的应用程序保持唤醒状态,您可以在设置中进行设置,然后在推送通知的数据中,您可以包括额外的参数,最后在接收推送通知的功能中,您可以对这些参数做任何事情!
简而言之,您可能只需要为您的应用程序正确配置推送通知,然后Apple/Google将完成其他工作,无论您的应用程序在后台运行还是完全关闭,它都将接收到通知。希望您根据我的说明找到一个好的解决方案。如果还有什么不清楚的地方,请随时在此处发布您所需的更多详细信息,谢谢!
这是我先前React-Native项目使用的库:(他们也有教程^^) https://github.com/zo0r/react-native-push-notification 补充说明:(基于作者的需求):
  • 目标是:用户将在应用程序中注册/登录,并订阅一些未来事件。
=>每当用户打开应用程序时,将向Apple/Google服务器发送数据以获取令牌,您将使用此令牌与用户的订阅数据一起发送到您自己的推送服务器(您可以使用PHP或node.js服务器或其他)。
  • 当事件更新时,应向将参加该事件的所有用户发送通知。因此,通知仅针对特定用户。
=> 像上面的回答一样,每次用户打开应用程序时都会发送数据(或更改设置,您可以在应用程序的逻辑中执行此操作,因为数据将保存在您自己的推送服务器上,这意味着在该服务器上,您甚至可以看到用户列表,并且可以针对某些用户 - 这取决于将从智能手机发送给用户的数据,但是用户可能会拒绝输入太多信息,例如姓名、年龄或电子邮件,但这取决于您的服务需求^^)

  • 点击它,应用程序将打开,并显示应用程序的某个页面(预先存在)。
=> 默认情况下,当点击通知时,应用程序肯定会被打开,而且您可以再次添加额外的参数到通知中(即您需要的着陆页面,然后在您的应用程序功能中,只需转到那里 - 但这可能需要额外的逻辑。此外,何时推送通知以及应该推送哪些数据等将由您自己的服务器控制)

  • 似乎最复杂的部分将是“发送给特定用户”的部分!
=> 我已经解释过了,但你说得对,实际上很复杂,因为您需要根据自己的需求创建自己的服务器,并且需要更多步骤(复杂的原因是您需要向Apple和Google注册许多内容,然后将它们的证书添加到自己的服务器中等等)

希望你能实现它,我建议你先玩一下并真正了解推送通知的工作原理(对于您自己的服务器和应用程序两侧都是如此)- 祝你好运^^


嗨,感谢您的回复! :) 实际上,我注意到即使应用程序关闭,“react-native-push-notification”也应该可以工作,您能确认一下吗?目标是:用户将在应用程序中注册/登录,并订阅一些未来的事件。当事件更新时,应向所有要参加该事件的用户发送通知。因此,通知仅针对特定用户。点击它后,应用程序将打开,并显示应用程序的某个页面(预先存在)。似乎最复杂的部分将是“发送给特定用户”的部分! - Michele Stieven
我其实不需要应用程序保持唤醒状态,我只需要在应用程序关闭时仍能接收到通知 :) - Michele Stieven
非常感谢!我应该如何处理我只想将某些通知发送给特定用户的事实?作为来自网络世界的人,我将此逻辑视为“可观察对象”,其中客户端侦听后端的更改,但似乎推送通知恰好相反! - Michele Stieven
请查看我上面编辑过的答案,它将回答所有问题。由于您是一名Web开发人员,构建自己的服务器以存储推送通知数据很容易^^在实现您的需求之前还有很多工作要做,但只要按照我的方向走,就会没问题(因为我也是从Web开发人员跳入移动应用程序世界的^^)。 - thinhvo0108
1
它肯定可以集成到Google Firebase中,因为后端和应用程序的逻辑完全分离且不同。我认为您和您的后端开发人员将一起找到一个好的解决方案^^ - thinhvo0108
显示剩余2条评论

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