我在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
在应用程序的其余部分中都有效。
致谢。
答案 0 :(得分:-1)
如果您想在FirebaseMesaagingService中使用“上下文”,则可以使用“ 此”
类的层次结构如下
FirebaseMessagingService扩展了Service(服务)扩展了ContextWrapper 哪一个(ContextWrapper)扩展了上下文
因此您可以直接使用
“ MyFirebaseMessagingService.this”或简称为“ this”