2017-06-20 4 views
0

Ich habe folgende Frage zum Erstellen eines Chatrooms. Das Nachrichtenmodell verfügt über eine creationTimeStamp-Eigenschaft, die zugewiesen wird, wenn der Benutzer Nachrichten vom Gerät sendet. Wenn ein anderer Benutzer (oder Benutzer diese Nachricht erhalten), ändere ich diese Eigenschaft im Moment nicht für die Zeit, wenn die Nachricht lokal auf dem Gerät empfangen wird. Nachrichten, die ich lokal in Realm speichere. Das Problem ist, dass zum Beispiel die Nachricht zu einem Zeitpunkt an die ersten Benutzer gesendet wurde, aber der zweite Benutzer wegen der langsamen Internetverbindung bereits Zeit hatte, seine Nachricht (oder Nachrichten) zu senden, dann erscheint dem zweiten Benutzer diese Nachricht nach seiner Nachricht gesendet an ChatViewController, aber wenn er diesen Controller verlässt und zurückgeht, wird seine Nachricht zuletzt angezeigt, und nicht die Nachricht des ersten Benutzers, da, wenn ich Nachrichten von Realm nehme, sortiere ich sie nach creationTimeStamp. So möchte ich die beste Praxis des Speicherns von Zeitstempel für diesen Fall lernen.Wie speichern Sie Nachrichten im Chat am besten nach Zeitstempel?

Kann es besser sein, die creationTimeStamp zu ändern, wenn die Nachricht auf dem Gerät empfangen wird? Aber es gibt auch hier Probleme, wenn der Benutzer mehr als ein Gerät hat. Obwohl ich denke, dass Nachrichten in iMessage gespeichert werden, weil sie die Synchronisation zwischen Geräten haben, füge ich Screenshots derselben Korrespondenz bei, wenn Nachrichten schnell erstellt wurden.

enter image description here enter image description here

Antwort

2

Leider habe ich nicht best practice für Sie, nur ein paar Gedanken.

Ich denke, was Sie erreichen möchten, ist ziemlich schwer zu erreichen, ohne die Benutzer zu belästigen. Was ich meine ist, dass aufgrund der Geschwindigkeit der Internetverbindung, verschiedene Benutzer unterschiedliche Sicht auf das Timing Ihrer Nachrichten haben können. Sie können ihre Ansicht nach einiger Zeit korrigieren/synchronisieren, indem Sie creationTimeStamp verwenden, um Nachrichten zurückzusetzen, aber dann werden Nachrichten auf dem Bildschirm neu geordnet, was lästig sein könnte.

Ich denke, Sie könnten über verschiedene Ansatz denken - ist es so wichtig, dass alle Benutzer die gleiche Timeline-Ansicht haben? Als wir vor einiger Zeit einen Gruppenchat eingeführt haben, haben wir uns darauf geeinigt, dass ein einzelner Benutzer eine andere Zeitleiste sehen kann. Dann verwendeten wir recievedTimeStamp zum Sortieren, für lokale Nachrichten receivedTimeStamp ist das gleiche wie creationTimeStamp. Für uns hat es ganz gut geklappt, aber natürlich können Sie unterschiedliche Anforderungen haben.

+0

Vielen Dank für das Teilen der Erfahrung, ich dachte auch darüber nach, was zu tun ist, um die getrennte Eigenschaft zu machen, wenn der Benutzer die Nachricht erhalten hat. Wenn Sie nach einiger Zeit keine Antwort erhalten, werde ich Ihre Fragen richtig beantworten. – Alexander

Verwandte Themen