2017-01-20 3 views
0

異なるデバイス間でデータベースを共有するには、どのような方法が最適ですが、それはユーザのものではなく、たとえば友人の電話機などです。つまり、iCloudはオプションではありません。ユーザのものだけでなく、異なるデバイス間でデータベースを共有する

例:私のデータのすべてを特定のアプリケーション・ユーザーなので、基本的には:

  • ユーザーがログインする私のアプリに、いくつかの作業
  • を行い、その後、彼は彼の友人の携帯電話に同じACCを使用してログインすることができますデータは同じである必要があります

オンラインストレージプロバイダ(firebaseなど)にユーザー固有のデータベース全体をアップロードし、別のデバイスにダウンロードしてコアデータスタックを初期化する方法はありますか?同じユーザーが別のデバイスにログインしていますか?

または、データをサーバーと同期させ、データベースをプリロードする唯一の方法はありますか?

答えて

0

単純にデータベースファイル全体をアップロードし、別のデバイスにダウンロードすることができます。しかし問題は移植性です。両方のデバイスが互換性があるように、同じバージョンのデータベースをサポートしていることを確認する必要があります。同じことを別のプラットフォームに移植することは、別の話ですが、コアデータを使用しない場合には可能です。

次に、競合の問題があります。 2番目のデバイスからログアウトすることを忘れて、1週間後にそのデバイスを開き、データベースが誤ってサーバに戻って同期したとします。これは、あなたの "メイン"デバイスで作成したすべてのデータを失うことになります。

一般的には、すべてを同期することは可能ですが、多くの問題があります。すべてのエンティティをサポートするサーバーを作成し、ids(オブジェクトが変更され、作成されていないことを知っているので)と、競合を解決できるように日付を変更して作業する必要があります。

0

Firebaseのようなものを使用する最大の理由は、複数のデバイス間でデータを同期させることです。それがその主要目的の1つです。 Core Dataの代わりにFirebaseをデータストレージとして使用すると、デバイス間の同期が自動的に処理されます。あなたは何かをアップロードしたりダウンロードしたりするためのコードを書かず、Firebaseのデータを読み書きし、同期を処理します。ユーザーアカウントをサポートしているため、ユーザーが別のデバイスにログオンすると、そのデバイスのデータが自動的に同期されます。もちろん、Firebase以外にも数多くのオプションがあります。

CloudKitもさまざまなデバイス間で同期しますが、電話機の現在のiCloudアカウントにリンクしています。アプリ内ログインが必要なので、あまりうまくいきません。

関連する問題