显示来自多个通知的消息-Android

时间:2017-05-15 17:42:36

标签: android notifications android-notifications firebase-cloud-messaging

我正在使用Firebase向我的应用发送通知,当我收到通知时,我将消息存储在我的共享首选项中,然后在活动中显示消息。但是,截至目前,我只在共享首选项中保存最新的通知消息。如何在共享首选项中保存通知中的所有消息?

2 个答案:

答案 0 :(得分:1)

我希望你从firebase收到的消息有一些唯一的id。现在,当您在共享首选项中保存邮件时,请使用有效内容中的唯一ID作为密钥。在您的情况下,MESSAGE_KEY与其被最新的覆盖的原因相同。只需在 saveKeyMessage 功能中使MESSAGE_KEY唯一,并为您收到的每个通知创建新的共享首选项实例。

或者

您可以使用以下代码将密钥设置为共享首选项生成的唯一键。

public boolean saveKeyMessage(String message){
  SharedPreferences sharedPreferences = 
  mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  Log.d("MainActivity", "Current Timestamp: " + format);
  editor.putString(unique_message_id, message);
  editor.apply();
  return true;

}

您可以使用以下代码显示所有共享首选项实例

SharedPreferences prefs = 
  mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
Map<String, ?> allPrefs = prefs.getAll(); //your sharedPreference
Set<String> set = allPrefs.keySet();
for(String s : set){
    LOG.d(TAG, s + "<" + allPrefs.get(s).getClass().getSimpleName() +"> =  "
            + allPrefs.get(s).toString());

希望这能解决你的问题!干杯!

答案 1 :(得分:0)

使用HashSetmessages存储到SharedPreferences

#。messages存储到SharedPreferences

public static final String KEY_MESSAGES = "messages";

............
.................
public boolean saveKeyMessage(String message) {

    SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    // Get existing messages
    Set<String> messages = getMessages();

    // Add new message to existing messages
    messages.add(message);

    // Store messages to SharedPreferences
    editor.putStringSet(KEY_MESSAGES, messages);
    editor.apply();

    return true;
}

#。messages获取SharedPreferences

public Set<String> getMessages() {

    SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);

    // Get messages
    Set<String> messages = sharedPreferences.getStringSet(KEY_MESSAGES, new HashSet<String>());

    return messages;
}

#。message获取最后SharedPreferences

public String getLastKeyMessage() {

    ArrayList<String> messageList = new ArrayList<String>(getMessages());
    return messageList.get(messageList.size() - 1);
}

希望这会有所帮助〜