在我的应用程序,我提供的视频和用户之间的语音通话。我使用的火力地堡实时数据库和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和火力地堡实时数据库中删除的通知。
所以,请有没有办法取消发送的通知,或者知道这些通知的发送状态,或周围的另一种方式来做到这一点?这将允许我加入让使用者未接来电列表。
谢谢!
在这样的情况下,我知道有两种选择:
在你能给的FCM消息的属性是collapse_key
。当您发送邮件带有一个collapse_key
,该消息替换具有相同collapse_key
值以往任何消息。
你可以用它来发送一个“不,忘掉它”消息,当用户取消呼叫。
或者你可以有FCM消息只是一个所谓的痒痛:一个几乎空的消息,只是告诉应用程序醒来,去检查其收到的消息队列在数据库中。
这样:如果呼叫仍然在数据库,应用程序可以把它捡起来。但是,如果在数据库中没有电话,它可以做什么。
你会想要做这种类型的数据库交互的服务,以便它可以在应用程序被运行中背景。