我正在开发一个 Android 项目,我的应用程序user_channel
在后台连接到并在频道中发生新事件时显示通知。
视图模型代码
@RequiresApi(Build.VERSION_CODES.O)
fun getNotifications(callback: (Payload) -> Unit) {
Coroutines.main {
repository.receiveText { msg ->
Log.d("NOTIFICATION", msg.toString())
callback(msg)
}
}
}
存储库代码
suspend fun receiveText(callback: (Payload) -> Unit) {
coroutineScope {
async {
sosChannel.on("notification") { message ->
callback(message.payload)
}
}
}
}
活动代码
viewModel.getNotifications() {
runOnUiThread {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
AlertNotification.alert(this, it["message"].toString() + "at " + it["latitude"] + " " + it["longitude"])
v.vibrate(VibrationEffect.createOneShot(1500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(1500);
}
Toast.makeText(
this,
it["message"].toString() + "at " + it["latitude"] + " " + it["longitude"],
Toast.LENGTH_LONG
).show()
}
}
现在,当应用程序处于前台,并且我的应用程序连接到通道时,我可以检查事件并且它工作正常但是当应用程序被杀死时,应用程序离开通道,我如何保持连接到通道以接收通知? 我还了解到,尽管 Facebook 和 whatsapp 之类的应用程序在后台保持活跃并显示通知,但发布 Android Oreo 后台工作是有限的,它们是如何做到的 - 我如何才能继续实现我的目标,即通过保持连接来接收通知非常感谢后台通道调用 Viewomdel 方法的任何建议,在此先感谢!