1

大家好我正在Android中实施Firebase推送通知。除了当我检索消息时,一切都工作正常,它们被复制两次。我尝试了整整一天的调试,但无法成功。请帮助我! 我正在使用共享首选项来存储邮件。我通过Api和它的话题发送。Android Firebase推送通知双值

下面是我MyFirebaseMessagingService类

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 

    if (remoteMessage.getData().size() > 0) { 
     Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 
    } 

    String message = remoteMessage.getData().get("message"); 

    SharedPreferences sp = getSharedPreferences("mypreference", Context.MODE_PRIVATE); 
    String prev = sp.getString("msg", "-"); 
    String newp; 
    if(prev != "-"){ 
     newp = prev+","+messageBody; 
    }else{ 
     newp = messageBody; 
    } 

    Log.d("prev123",prev); 

    SharedPreferences.Editor e = sp.edit(); 
    e.putString("msg",newp); 
    Log.d("afterstore", newp); 
    e.commit(); 
    e.apply(); 
} 

我onMessageReceived()方法的代码我所在的地方显示了消息类:

@Override 
public void onResume() { 
super.onResume(); 
String msg = sp.getString("msg", null); 
Log.d("message", msg); 
String[] pqrs = msg.split(","); 

Log.d("Array msg",pqrs); 

ArrayAdapter<String> adp = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,pqrs); 
listView.setAdapter(adp); 

在登录一旦收到消息,它显示了,但就在第二个相同消息的一小部分被附加到日志之后。不知道如何。请帮忙。

+0

只是一个想法,不要做onResume()检索,做onCreate(),看看会发生什么。 –

+0

请发表您的其他关于firebase的课程 –

+0

Hi @ msh.nayan我也试过这个问题,但问题仍然存在 – Aashish

回答

0

我不明白什么是完全重复的。 İf它是您保存的数据可能是您保存两次的原因。

e.commit(); 
e.apply() 

只要使用其中之一。它们执行的操作与异步或同步不同。

好运

埃姆雷

+0

感谢@埃姆尔为您提供宝贵的答案。我试图删除e.commit(),但没有帮助。 – Aashish

+0

那么onMessageReceived调用两次? –

+0

它只叫一次。我想问题是当我将它存储在共享首选项中时,它存储了两次 – Aashish

0

你有没有应用程序的明确数据删除犯行之后?修复后您可以使用旧的重复数据进行测试?

此外,如果您在其他类中调用意图,请尝试删除它。据我所知,它是由firebase的基类自动调用的。

+0

是的,我删除了应用程序数据 – Aashish