在后台使用通知数据

时间:2017-03-21 06:44:45

标签: android

我正在使用Firebas消息服务类。当应用程序在前台运行时,它正常工作,但是当我从最近清除此应用程序时,我无法访问推送通知数据以在textview上进行设置。 我想在app在后台运行时将数据存储在数据库中。 我曾使用数据库直接存储值但它不起作用。

 public void onMessageReceived(RemoteMessage message) {


    database=new SQLiteHelper(getApplicationContext());
    database.open();
    String image = message.getNotification().getIcon();
    String title = message.getNotification().getTitle();
    String text = message.getNotification().getBody();
    String sound = message.getNotification().getSound();
    int id = 0;
    database.addQuotes(text,"Xyz");

}

在Oncreate方法的MainActivity.java中

  Bundle extras = getIntent().getExtras();
    if (extras != null) {
        final String message = extras.getString("message");
        quote_text.setText(message);
        Toast.makeText(this, "A", Toast.LENGTH_SHORT).show();
    }

但是消息显示空数据。

2 个答案:

答案 0 :(得分:1)

基于此:

  

我想在应用程序在后台运行时将数据存储在数据库中

扩展FirebaseMessagingService的服务调用有一个名为onMessageReceived的方法,当在前端(app)收到推送通知时,会调用该方法将消息添加到DB!

@Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
 ..... 
// parse and add your message to Db here! 

答案 1 :(得分:1)

通常,当您的应用在后台时,Android会将通知消息定向到系统托盘。用户点按通知会默认打开应用启动器。

这包括包含通知和数据有效负载的消息(以及从Notifications控制台发送的所有消息)。在这些情况下,通知会传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传送。

但如果您想在后台获取应用中的通知data-messages,则可以在stackoverflow上提及this

您也可以参考this