Не хотите отправлять уведомления, когда есть актуальный чат (активность чата открыта) в android с помощью fcm - PullRequest
0 голосов
/ 24 марта 2020

Я использую 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);
                                }
                            });
                }
            }
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...