在学习Google的Firebase和Android(Kotlin)的过程中,我想出了一个简单的应用创意,我想追求并实际在Google商店上发布。
这个想法是,您创建一个小组,加入人们,并向该小组中的每个人发送预定义的简短消息作为推送通知。类似于传呼机或聊天应用程序。
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。通常,除了...
以外,建议的修复均有效我可以实现这作为一种计时器任务,每30秒调用Firebase DB或使用FCM消息而不是数据库,但这引出了问题:
该应用程序有点像带有预定义短信(最多100个字符)的聊天应用程序,我想我正在尝试以尽可能少的硬件支出来实现这一目标。也许我在这里愚蠢,以为没有大型服务器就可以做到这一点。
谢谢您的提示!
Keran
您可以使用Cloud Functions for Firebase
开发人员为新功能编写代码,然后选择一个事件提供程序(例如实时数据库),并定义条件该函数应在其下执行。
我有一个聊天应用程序。我正在使用函数和实时数据库。当它向数据库中写入新消息时,我正在向用户发送通知。这样,我无需采取任何措施。 Firebase为我进行侦听过程并发送通知。
自由模式:
调用次数=> 125K /月