1

私はFirebaseを使用して自分のアプリケーションに通知を送信しています。通知を受け取ったときに、共有プリファレンスにメッセージを保存し、そのメッセージをアクティビティに表示します。しかし、現在のところ、私は共有の設定で最新の通知メッセージのみを保存しています。共有環境設定の通知からすべてのメッセージを保存するにはどうすればよいですか?複数の通知からメッセージを表示する-Android

答えて

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()); 

が、これはあなたの問題を解決ホープすべての共有好みのインスタンスを表示するには、次のコードを使用することができます!乾杯!

+0

を助けるあなたの答えをありがとう!これは私の多くを助け、私は問題を特定した、彼らはすべて同じIDを持っていた。しかし、getkeymessage()関数で特定のIDをどのように呼び出すのですか? – dfabiano

+0

ペイロードから新しいJSONオブジェクトを作成して、そこから文字列を取り出し、関数に渡すことができます。同じidを使用して、共有設定を取得します。将来的にこの問題に直面する人にとって役立つような問題が解決された場合は、回答を受け入れたものとしてマークしてください。 –

+0

私はちょうど、かなり役に立ちました。このプロセスがgetkeymessage()関数をどのように探すのでしょうか? – dfabiano

0

HashSetを使用してmessagesSharedPreferencesに格納します。

SharedPreferencesストアmessages

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; 
} 

#。SharedPreferencesからmessagesを取得します。

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; 
} 

#。SharedPreferencesから最後messageを取得します。

public String getLastKeyMessage() { 

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

希望これは〜

+0

あなたの回答ありがとう、これは私がputStringSet()をサポートしていないバージョンを使用していなかった場合に動作します – dfabiano

関連する問題