0

Realmのタスクデモアプリケーションに続いてリアルタイム同期を実装しました。固有のレルムコンテナオブジェクト

モデルにListを保持するために、ダミーコンテナが使用されています。

デモアプリケーションはオフラインでの使用をサポートしていないようです。

この設定では、オンラインとオフラインのデバイスでアプリを起動し、オフラインのデバイスでオンラインにするとどうなるのだろうと思った。

当初の予想は、2つのコンテナ(無効な状態になります)で終了することでしたが、驚いたことにテストしたところ、最後に1つのコンテナしかありませんでした。

しかし、時には2つのコンテナがあり、原因を特定することができませんでした。

これはどういう意味ですか?私はコンテナが最初にオフラインデバイスを同期するときにコンテナが通常重複しない理由は、同じオブジェクトとして扱われていることです。主キーなどがないためでしょうか?しかし、それはなぜ時々複製されますか?ここでベストプラクティスは何ですか?重複がある場合は接続後にプライマリキーを使用する必要がありますか?そうであればコンテナを手動でマージしますか?

答えて

1

現在、レルムタスクは、新しいベースリストコンテナオブジェクトを追加しようとする前に、デフォルトレルムが空であるかどうかをチェックするだけです。このチェックが行われるまでに同期プロセスが完了していない場合は、2番目のコンテナが作成されることは妥当です。ローカルネットワーク上でアプリをテストする場合、ダウンロード速度が非常に速いため、通常これは問題ではありませんが、これをもう少し徹底的にテストする必要があります。

プライマリキーを追加することは、2番目のリストがローカルに作成された場合、サーバーからのバージョンにマージされることを意味するので、間違いなく役立ちます。

最近、新しい進捗通知システムを使用して2台目のデバイスがユーザーのRealm Mobile Platformアカウントに接続する際の「オンボード」プロセスに焦点を当てました。より論理的なアプローチは、ログイン後に同期が最初のダウンロードを完了するのを待ってから、オブジェクトの存在を確認することです。ドキュメントが完成したら、Realm Tasksがこれをどのように処理するかを改める予定です。

デモアプリケーション(Realm Mobile Platformと同様)は、ユーザーが最初にログインした後(これらのコンテナオブジェクトが最初に生成されたとき)にのみオフラインをサポートします。その後、アプリケーションはオフラインで使用でき、その中間で行われた変更は、次にオンラインになると同期されます。

私たちは、ユーザーがすぐに(オフラインでも)アプリケーションを使い始めることができる「匿名ユーザー」機能を構築し、ログインする前に行った変更(オフラインであるため)そうした後でユーザーアカウント。

+0

ありがとうございました!この修正は、プライマリキーを追加することになります。私はなぜそれがなくてもマージがほとんどの時に働くのだろうかと思う。おそらく、プライマリキーと同様の方法で使用される内部オブジェクトIDがありますか? – Ixx