2017-02-19 14 views
0

現在、デバイスのドキュメントフォルダに格納されている写真と併せてRealmデータベースを使用するモバイルアプリケーションがあります。写真付きRealm Mobile Platformの使用

ユーザーがアプリを使用し、異なるデバイス間でデータを共有できるようにする方法を探しているのは、新しいRealm Mobile Platformに非常に関心があります。しかし、私たちがよく理解できないことの1つは、写真でどのように動作するかということです。別のサービスを通じてデバイス間で手動で同期する必要がありますか? Realm Mobile Platformで動作させる方法はありますか?どのようにしてこの仕事をすることができるかというアイデアは非常に高く評価されます。

答えて

2

データベースに写真を保存すると機能しますが、サイズが大きくなる可能性があります。オフライン機能を維持したいと考えています。ユーザーがオフラインで画像を追加すると、その画像が最終的に同期することが期待されます。

一つの解決策は、デバイスごとのレルムを持っているだろう(つまり、サーバー以外のものとの同期を避けるために、それに一意の名前を付け)単一のクラス(擬似コード)で画像アップロードキューとして使用することができること:

新しい ObjectWithImageを追加するとき
class Image : RealmObject { 
    byte[] Data 

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

次に、画像をあなたのオブジェクトは、だから今

class ObjectWithImage : RealmObject { 
    string ImageUrl 

    // Other properties 
} 

のようになります、あなたは画像レルムに対応するImageオブジェクトを追加します。その後、サーバー上で、イメージRealm(少なくともプロフェッショナル版が必要です)の変更をリッスンし、新しいImageが同期化されたら、AWS S3/Azure BLOB /他のホストにデータをアップロードし、対応するObjectWithImage ' s ImageUrlを入力し、処理済みのImageオブジェクトを削除します。次に、画像キャッシングライブラリを使用することができます(例: SDWebImage URLから画像をダウンロードしてローカルに保存すると、次回検索が高速になります。

このソリューションの利点は次のとおりです。

  • 共有領域は、このように速く同期を行うストレージと帯域幅の要件の両方を減らすことは、urlのが唯一含まれています。
  • アプリケーションはオフラインで動作し、接続が復元されると、最終的に共有レルムとイメージレルムの両方を同期します。
  • レルムのイメージは他のデバイスと同期されないため、不要なトラフィックは発生しません。

そして、いずれかの解決策が行くように、いくつかの欠点があります。

  • それは、サーバ上のオブジェクトを修正する必要とするそれは、開発版では動作しません。
  • 2つの異なる領域で2つのトランザクションを(できれば)アトミックな方法でコミットしたいので、より高度なトランザクションエラー処理が必要な場合があります。
関連する問題