Я работаю над проектом Android, где мое приложение подключено к user_channel
в фоновом режиме и показывает уведомление, когда в канале происходит новое событие.
Код Viewmodel
@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()
}
}
Теперь, когда приложение на переднем плане, и мое приложение подключено к каналу, я могу проверить событие, и оно работает нормально. Но когда приложение убито, приложение покидает канал. Как я могу оставаться на связи с каналом, чтобы получать уведомления? Я также узнал, что пост Android фоновая работа Oreo ограничена, несмотря на то, что Facebook и приложения, похожие на WhatsApp, остаются активными в фоновом режиме и показывают уведомления, как они это делают - Как я могу приступить к достижению своей цели, то есть получать уведомления, оставаясь на связи на канал в фоновом режиме при вызове метода Viewomdel, любые предложения очень приветствуются, заранее спасибо!