2017-02-19 77 views
0

我們有一個移動應用程序,目前使用Realm數據庫與存儲在設備文檔文件夾中的照片一起使用。使用Realm移動平臺和照片

我們正在尋找一種方法來允許我們的用戶使用應用程序並在不同設備之間共享數據,他們對新的Realm移動平臺非常感興趣。有一件事我們無法弄清楚,但它是如何與照片配合使用的。我們是否需要通過其他服務手動同步這些設備?或者有什麼方法可以使其與Realm Mobile Platform協同工作?任何想法,我們如何能夠做到這一點將不勝感激。

回答

2

將照片存儲在數據庫中可行,但可能會增加很多。我想你還想保留離線功能 - 例如如果用戶在離線時添加圖片,他們會希望圖片最終同步。

一個解決辦法是有一個每個設備領域(即給它一個唯一的名稱,以避免與任何東西,但服務器同步),可以用來作爲圖像上傳隊列有一個單獨的類(僞):

class Image : RealmObject { 
    byte[] Data 

    // Other properties to map this image to whatever 
    // object it belongs to. 
} 

然後,圖片你的對象看起來就像

class ObjectWithImage : RealmObject { 
    string ImageUrl 

    // Other properties 
} 

所以,現在,當你添加一個新的ObjectWithImage,您將添加相應的Image對象的圖像境界。然後,在服務器上,您可以偵聽Realm(至少需要專業版)的更改,並且當新的Image獲得同步時,您可以將數據上傳到AWS S3/Azure blob /其他主機,更新相應的ObjectWithImage' s ImageUrl,並刪除處理後的Image對象。然後在設備上可以使用圖像緩存庫,例如SDWebImage從網址下載圖片並將其存儲在本地以便下次更快地檢索。

這種解決方案的優點是:

  • 共享境界將只包含的URL,同時降低存儲和帶寬的要求從而使同步更快。
  • 該應用程序將在離線狀態下工作,最終在連接恢復時同步共享領域和映像領域。
  • Realm將不會同步到其他設備,因此不會有任何不必要的流量。

而且,正如任何解決得好,也有一些缺點:

  • ,因爲它需要在服務器上修改的對象將無法與開發版工作。
  • 它可能需要一些更高級的事務錯誤處理,因爲您想以(最好)原子方式在兩個不同領域中提交兩個事務。