Pager应用-应用被杀死-听Firebase更改并发送通知

问题描述 投票:0回答:1

在学习Google的Firebase和Android(Kotlin)的过程中,我想出了一个简单的应用创意,我想追求并实际在Google商店上发布。

这个想法是,您创建一个小组,加入人们,并向该小组中的每个人发送预定义的简短消息作为推送通知。类似于传呼机或聊天应用程序。

  • 使用Firebase Cloud Firestore创建用户和组-> 该部分工作正常
  • 对于通知部分,在组内,我在Group集合下插入一个通知对象,并在我的应用程序侧具有一个数据库侦听器,用于创建通知,像这样的简单实现:
val docRef = DatabaseController.db.collection(NaggerGlobalNotifications.TABLE_NAME)
        docRef.addSnapshotListener { snapshot, e ->
            if (e != null) {
                Log.w(TAG, "Listen failed.", e)
                return@addSnapshotListener
            }

            for (dc in snapshot!!.documentChanges) {
                when (dc.type) {
                    DocumentChange.Type.ADDED -> {
                        val newNotification = dc.document.toObject<MyNotification>()
                        NotificationsController.createNotification(
                            this,
                            newNotification.title,
                            newNotification.message
                        )
                    }
                }
            }
        }

“” NotificationsController.createNotification“使用标准NotificationCompat.Builder创建通知,该通知运行得很好。

现在是我正在奋斗的部分

我最初的计划是要有一个在后台运行此侦听器的服务。将某些通知添加到我的Firebase Cloud Firestore节点后,侦听器将捕获该通知并在组成员的电话上发出通知。

当该应用程序处于活动状态时,这可以很好地工作。当应用程序被杀死时,通知将停止工作。

我尝试了这里描述的解决方案:https://fabcirablog.weebly.com/blog/creating-a-never-ending-background-service-in-android,但最终到了这里:Listen to firebase database changes when app is closed。通常,除了...

以外,建议的修复均有效

似乎无法在后台侦听Firebase数据库更改

我可以实现这作为一种计时器任务,每30秒调用Firebase DB或使用FCM消息而不是数据库,但这引出了问题:

  • 如果使用计时器呼叫-如果我有100万用户,并且每30秒将有100万呼叫Firebase进行更新,那么我是否必须成为百万富翁才能通过Google Firebase购买这种带宽?
  • [如果是FCM,则只有在使用Firebase控制台或需要设置专用服务器的情况下才可以触发FCM消息(我认为吗?)->对大公司来说很好,但对像我这样的单个开发人员而言是不可能的:(

一般来说,我在这里寻求的是一些指导原则

该应用程序有点像带有预定义短信(最多100个字符)的聊天应用程序,我想我正在尝试以尽可能少的硬件支出来实现这一目标。也许我在这里愚蠢,以为没有大型服务器就可以做到这一点。

谢谢您的提示!

Keran

android kotlin firebase-realtime-database firebase-cloud-messaging android-service
1个回答
1
投票

您可以使用Cloud Functions for Firebase

开发人员为新功能编写代码,然后选择一个事件提供程序(例如实时数据库),并定义条件该函数应在其下执行。

我有一个聊天应用程序。我正在使用函数和实时数据库。当它向数据库中写入新消息时,我正在向用户发送通知。这样,我无需采取任何措施。 Firebase为我进行侦听过程并发送通知。

自由模式:

调用次数=> 125K /月

© www.soinside.com 2019 - 2024. All rights reserved.