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