如何在Flutter中使用自定义后端设置推送通知,无需Firebase

18
我一直在使用React Native开发一个App,现在考虑使用Flutter重构该App。在开始重建之前,我正在研究Flutter的功能,并查看它是否适合我们的项目。我在推送通知插件方面遇到了一些困难。有很多关于使用Firebase云消息传递将推送通知发送到Flutter App的文章,其中使用了App中的Firebase Messaging插件,但我没有找到任何关于如何使用自定义后端设置推送通知的好文章。
我们已经有一个定制的Node JS后端,可以向苹果和谷歌的推送消息系统提供推送通知,因此我不想开始依赖Firebase云消息传递,这只会让我们的系统变得更加复杂。
有人知道如何使用自己的定制化Node JS后端来设置Flutter App的推送通知吗?

1
你能解决它吗?我也在寻找答案。 - Chuck K
不确定Flutter和node.js,但这已经在其他平台上进行了探索,因此这可能会给你在Flutter中如何做到这一点的提示。请参见https://dev59.com/Xq3la4cB1Zd3GeqPR8N0,https://dev59.com/C6Lia4cB1Zd3GeqPl59a或https://stackoverflow.com/questions/48948310/android-firebase-cloud-messaging-device-to-device-push-notification-without-se。 - TWL
1个回答

7

首先回答问题前需要问一些内容。

  1. 你知道推送通知是如何工作的吗?
  2. 后端如何通知移动设备有变化?

首先讲一下 Firebase 的工作原理:

当后端向 Firebase 服务器发送推送通知时,Firebase 会在与 Google Play 服务主动连接的 XMPP 服务器上发送一条消息,苹果 APNs 服务器也是同样的方式。

现在,当 Google Play 服务收到该消息时,它将包含捆绑 ID 和用于识别要发送哪个应用程序的信息。这就是为什么我们在 Android 应用程序清单文件中注册广播。

请想象一下广播没有任何发送广播调用就不会被调用,如果您未调用该函数,则谁会调用呢?

这部分由 Google Play 服务处理,以启动您的广播并让您知道您收到了哪些推送通知。

所以我的答案是,不要使用后端来触发推送通知,因为您需要使用自己的 XMPP 服务器,并让您的应用程序处于高优先级连接状态,这目前是不可能的,而且如果您不弹出通知,您将无法在后台执行(即使对于 iOS,在15分钟后也不能保持在后台,但您可以通过重写一些方法来延长,请注意如果苹果公司向您报告,则您将无法使应用程序达到生产就绪状态。)

因此,对于 Android 来说,不管是 Google 服务还是其他服务(例如 Azure 通知),仍然需要 GCM 令牌和密钥,因此您可能需要重新考虑当前正在考虑的内容。


实时聊天应用程序如何处理这个问题?它们不会显示正在后台运行的通知。 - Sagar V
2
那不是推送通知,那是XMPP聊天。请检查Quickblox或Firebase XMPP聊天服务器。不要依赖推送通知聊天,我在以前的公司犯过这个错误,结果非常糟糕。有时候推送会来,有时候不会。所以最好使用适当的聊天SDK。 - Parth Dave

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