Проблемы с доступом к базе данных в FirebaseMessagingService - PullRequest
0 голосов
/ 05 октября 2019

У меня было приложение с PushBots, и оно работало нормально. Клиент попросил перейти на FCM, так я и сделал. И это в основном работает отлично. Я получаю уведомления и, когда приложение находится на переднем плане, уведомления сохраняются. С приложением в фоновом режиме уведомления все еще приходят без каких-либо проблем, но в этом случае они не сохраняются в базе данных.

Итак, я начал с этого:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    Timber.d("RECIEVED");

    RemoteMessage.Notification n = remoteMessage.getNotification();
    if (n != null) {

        Notification notification = new Notification();
        notification.setTitle(n.getTitle());
        notification.setMessage(n.getBody());
        notification.setDate(System.currentTimeMillis());

        NotificationDAO dao = new NotificationDAO(MyApp.getInstance());
        dao.create(notification);

        showNotification(n.getTitle(), n.getBody());
    }
}

Итак, я подумал, что проблемаможет быть в контексте, поэтому я попытался заменить MyApp.getInstance() на getApplicationContext(). Это не сработало, поэтому я сменил getApplicationContext() на this. Поскольку он не работал, я не пытался сделать этот доступ внутри другого потока, но ни один из них не работал.

Что я делаю не так? Метод дао create работает в остальной части приложения.

С уважением.

1 Ответ

0 голосов
/ 05 октября 2019

Если вы хотите использовать «context» в вашем FirebaseMesaagingService, вы можете использовать ' this '

Иерархия классов выглядит следующим образом:

FirebaseMessagingService расширяет Сервис, который(Сервис) расширяет ContextWrapper, который inturn (ContextWrapper) расширяет Контекст

Следовательно, вы можете напрямую использовать,

'MyFirebaseMessagingService.this' или просто 'this'

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