Firebase уведомления, когда приложение закрыто - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть рабочее android приложение с облачными уведомлениями Firebase, но если я закрываю приложение, уведомления не приходят, пока я не открою приложение снова. Есть ли возможность создания какой-либо службы, которая будет работать в фоновом режиме, перехватывать входящие сообщения и создавать уведомления? Просто чтобы прояснить - я имею в виду ситуацию, когда приложение даже не работает в фоновом режиме.

Кроме того, когда приходит уведомление, мне нужен токен авторизации для моего внутреннего API, и из-за этого иногда происходит сбой приложения ( onMessageRead FirebaseMessagingService запускается до того, как приложение может получить токен). Существует ли простая в реализации возможность пометить сообщение как непрочитанное в базе данных, чтобы оно появилось снова через некоторое время? Или выберите момент, когда onMessageeRead срабатывает при открытии приложения?

1 Ответ

0 голосов
/ 11 февраля 2020

Этот код может вам помочь.

 if (isAppIsInBackground(context)) {
        int res = Utility.getRandomId();
        PendingIntent pendingIntent;

        Intent intent = setActivityIntent(notifyDataModel);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        pendingIntent = PendingIntent.getActivity(context, res, intent, 0);

        mBuilder.setContentTitle(notifyDataModel.getStrTitle())
                .setContentText(notifyDataModel.getStrMessage())
                .setNumber(1)
                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setAutoCancel(true)
                .setColor(ContextCompat.getColor(context, R.color.colorAccent))
                .setContentIntent(pendingIntent);
        getManager().notify(res, mBuilder.build());

    } else {
        int res = Utility.getRandomId();
        PendingIntent pendingIntent;
        Intent intent = setActivityIntent(notifyDataModel);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        pendingIntent = PendingIntent.getActivity(context, res, intent, 0);

        mBuilder.setContentTitle(notifyDataModel.getStrTitle())
                .setContentText(notifyDataModel.getStrMessage())
                .setNumber(1)
                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setAutoCancel(true)
                .setColor(ContextCompat.getColor(context, R.color.colorAccent))
                .setContentIntent(pendingIntent);
        getManager().notify(res, mBuilder.build());

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...