Subscribe to control topic when keepalive message on non-control topic is received
This commit is contained in:
parent
957c351c96
commit
042a7dc66b
1 changed files with 8 additions and 2 deletions
|
@ -22,6 +22,7 @@ class FirebaseService : FirebaseMessagingService() {
|
||||||
private val job = SupervisorJob()
|
private val job = SupervisorJob()
|
||||||
private val notifier = NotificationService(this)
|
private val notifier = NotificationService(this)
|
||||||
private val broadcaster = BroadcastService(this)
|
private val broadcaster = BroadcastService(this)
|
||||||
|
private val messenger = FirebaseMessenger()
|
||||||
|
|
||||||
override fun onMessageReceived(remoteMessage: RemoteMessage) {
|
override fun onMessageReceived(remoteMessage: RemoteMessage) {
|
||||||
// We only process data messages
|
// We only process data messages
|
||||||
|
@ -33,15 +34,20 @@ class FirebaseService : FirebaseMessagingService() {
|
||||||
// Dispatch event
|
// Dispatch event
|
||||||
val data = remoteMessage.data
|
val data = remoteMessage.data
|
||||||
when (data["event"]) {
|
when (data["event"]) {
|
||||||
ApiService.EVENT_KEEPALIVE -> handleKeepalive()
|
ApiService.EVENT_KEEPALIVE -> handleKeepalive(remoteMessage)
|
||||||
ApiService.EVENT_MESSAGE -> handleMessage(remoteMessage)
|
ApiService.EVENT_MESSAGE -> handleMessage(remoteMessage)
|
||||||
else -> Log.d(TAG, "Discarding unexpected message (2): from=${remoteMessage.from}, data=${data}")
|
else -> Log.d(TAG, "Discarding unexpected message (2): from=${remoteMessage.from}, data=${data}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleKeepalive() {
|
private fun handleKeepalive(remoteMessage: RemoteMessage) {
|
||||||
Log.d(TAG, "Keepalive received, sending auto restart broadcast for foregrounds service")
|
Log.d(TAG, "Keepalive received, sending auto restart broadcast for foregrounds service")
|
||||||
sendBroadcast(Intent(this, SubscriberService.AutoRestartReceiver::class.java)) // Restart it if necessary!
|
sendBroadcast(Intent(this, SubscriberService.AutoRestartReceiver::class.java)) // Restart it if necessary!
|
||||||
|
val topic = remoteMessage.data["topic"]
|
||||||
|
if (topic != ApiService.CONTROL_TOPIC) {
|
||||||
|
Log.d(TAG, "Keepalive on non-control topic $topic received, subscribing to control topic ${ApiService.CONTROL_TOPIC}")
|
||||||
|
messenger.subscribe(ApiService.CONTROL_TOPIC)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleMessage(remoteMessage: RemoteMessage) {
|
private fun handleMessage(remoteMessage: RemoteMessage) {
|
||||||
|
|
Loading…
Reference in a new issue