在FirebaseMessagingService中访问数据库时出现问题

时间:2019-10-05 09:32:19

标签: java android firebase-cloud-messaging

我在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。由于它不起作用,所以我都没有尝试在另一个线程内进行此访问,但是没有任何作用。

我在做什么错? dao的方法create在应用程序的其余部分中都有效。

致谢。

1 个答案:

答案 0 :(得分:-1)

如果您想在FirebaseMesaagingService中使用“上下文”,则可以使用“

类的层次结构如下

FirebaseMessagingService扩展了Service(服务)扩展了ContextWrapper 哪一个(ContextWrapper)扩展了上下文

因此您可以直接使用

“ MyFirebaseMessagingService.this”或简称为“ this”