Я использую FCM для отправки уведомления в приложении чата. Устройство получает уведомление как в фоновом режиме, так и на переднем плане, но когда есть реальный чат (активность чата открыта), я не хочу получать уведомление. Как я могу это реализовать? Вот мой код:
final String message = msg;
docIdRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@androidx.annotation.Nullable DocumentSnapshot documentSnapshot, @androidx.annotation.Nullable FirebaseFirestoreException e) {
User user = documentSnapshot.toObject(User.class);
if (notify) {
sendNotification(userid, message);
}
notify = false;
}
});
private void sendNotification(final String userid, final String message) {
Query query = db.collection("Users").whereEqualTo("userid", userid);
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
for (QueryDocumentSnapshot queryDocumentSnapshot : queryDocumentSnapshots) {
User token = queryDocumentSnapshot.toObject(User.class);
String text=currentUser.getDisplayName()+" sent "+message;
Data data = new Data(uid, text, "New Message", userid, R.mipmap.ic_launcher);
for (int i = 0; i < token.getDevicetokenIds().size(); i++) {
Sender sender = new Sender(data, token.getDevicetokenIds().get(i));
apiService.sendNotification(sender)
.enqueue(new Callback<MyResponse>() {
@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
if (response.code() == 200) {
if (response.body().success != 1) {
Log.d("MSGERROR----", "" + response);
Log.d("MSGERROR----", "" + call);
}
}
}
@Override
public void onFailure(Call<MyResponse> call, Throwable t) {
Log.d("MSGERROR----", "" + call);
}
});
}
}
}
});
}