В моем приложении я предлагаю видео и голосовые звонки между пользователями.Для этого я использую базу данных Firebase Realtime и FCM.
Вот данные, которые доставляет мое уведомление:
data: {
channel_id: channel_id,
user_id: user_id
}
В моем классе FirebaseMessagingService я получаю данные иоткройте видео / вызов, например, так:
if(remoteMessage.getData().size > 0) {
Intent intent = new Intent(this, VideoCallActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("channel_id", remoteMessage.getData().get("channel_id"));
intent.putExtra("user_id", remoteMessage.getData().get("user_id"));
getApplicationContext().startActivity(intent);
}
Все работает отлично, даже когда приложение находится в фоновом режиме.Тем не менее, я сталкиваюсь с этой проблемой:
Если у пользователя не было подключения к Интернету, когда он вызывался, при подключении к Интернету его телефон автоматически запускает VideoCallActivity, даже если вызов был прерван (повызывающего абонента) и уведомление удалено из базы данных Firebase в реальном времени.
Так, пожалуйста, есть ли способ отменить отправленные уведомления, или узнать состояние доставки этих уведомлений, или другой способ сделать это?Это позволит мне добавить список пропущенных звонков для пользователей.
Спасибо!