2016-10-04 4 views
1

Wir machen eine App mit einigen Chat-Funktionen und verwenden das SendBird Android SDK, um dies zu erreichen.Speichern der SendBird-Kanalliste - Android

Wenn sich der Benutzer anmeldet, fragen wir SendBird nach den GroupChannels dieses Benutzers ab. Dies gibt eine Liste der Kanäle zurück, auf denen sich der Benutzer gerade befindet. Wir möchten diese Liste beibehalten können.

Derzeit verwenden wir TinyDb in der App, um einige Daten zu erhalten. Dies ist jedoch nicht möglich, mit der Liste der GroupChannels aufgrund dieses Fehlers:

Unable to invoke no-args constructor for com.sendbird.android.BaseMessage Register an InstanceCreator

So haben wir versucht, auch eine ORM-Bibliothek, Realm für Android verwenden. Dies erfordert jedoch, dass wir SendBird-Klassen ändern, um RealObject zu erweitern, und wir bevorzugen es, nicht an SendBirds Klassen zu basteln.

Also ich denke, die wirkliche Frage ist, wie können wir eine Liste von Objekten, die uns nicht gehören (SendBird-Klassen) speichern/persistieren.

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Momentan unterstützt SendBird keine lokale Datenbank und Serialisierung offiziell.
Wir sind uns der Unannehmlichkeiten bewusst, denen Sie ausgesetzt sind, und suchen nach Möglichkeiten, sie zu mindern.
Ich werde Sie über dieses Problem auf dem Laufenden halten.

1

Serialisierung wurde kürzlich hinzugefügt. Der Abschnitt caching data in der Dokumentation bietet eine Demonstration.

Im Wesentlichen würden Sie diese Methoden zum Serialisieren und Deserialisieren von Nachrichten und Kanälen verwenden.

byte[] baseMessage.serialize() 
BaseMessage BaseMessage.buildFromSerializedData(byte[] data) 

byte[] baseChannel.serialize() 
BaseChannel BaseChannel.buildFromSerializedData(byte[] data) 

Dann speichern Sie die serialisierten Daten in einer lokalen Datenbank (z SQLite oder Realm) und aktualisieren, wenn Sie eine neue Nachricht erhalten, oder wenn ein neuer Kanal erstellt wird.