2017-06-10 10 views
1

the docsによると、レルムは、「書き込みトランザクションがコミットされるたびに」といった特定のアクションが発生したときに通知することができます。 Realm Object Serverを使用しています。ユーザーが初めてアプリケーションを開くと、大量のデータがサーバーからアプリケーションに同期されます。レルムが最初の同期を完了するまで、読み込み画面を表示してアプリのメインUIを表示しないようにしたいと思います。このプロセスが完了したときに通知/決定する方法はありますか?レルム:初期同期後の通知

+0

どのプラットフォーム?アンドロイドイノス反応ネイティブxamarin? – EpicPandaForce

+0

リアクションネイティブ/ JS – AdamG

答えて

1

realm.ioのウェブサイトでは、これを行う方法についてdocumentationが投稿されました。

非同期で開くレルム

レルムを開くと、そのような移行を適用するか、同期化レルムのリモートコンテンツをダウンロードするなど、時間のかかる操作を、必要とするかもしれない場合は、必要なすべての作業を実行するためにopenAsync APIを使用する必要があります指定されたキューにディスパッチする前に、レルムをバックグラウンドスレッド上で使用可能な状態にする。また、読み取り専用に設定されたレルムでopenAsyncを使用する必要があります。例えば

Realm.openAsync({ 
    schema: [PersonSchema], 
    schemaVersion: 42, 
    migration: function(oldRealm, newRealm) { 
    // perform migration (see "Migrations" in docs) 
    } 
}, (error, realm) => { 
    if (error) { 
    return; 
    } 
    // do things with the realm object returned by openAsync to the callback 
    console.log(realm); 
}) 

はopenAsyncコマンドは、その第二として、その最初のパラメータとコールバックとして構成オブジェクトを取ります。コールバック関数はブールエラーフラグとオープンされたレルムを受け取ります。

初期ダウンロードいくつかのケースでは

、あなたはそれが可能なすべてのリモートデータを持つまで、レルムを開くしたくない場合があります。このような場合は、openAsyncを使用してください。同期化されたレルムと共に使用すると、コールバックが呼び出される前にレルムのすべてのコンテンツがダウンロードされます。

var carRealm; 
Realm.openAsync({ 
    schema: [CarSchema], 
    sync: { 
    user: user, 
    url: 'realm://object-server-url:9080/~/cars' 
    } 
}, (error, realm) => { 
    if (error) { 
    return; 
    } 
    // Realm is now downloaded and ready for use 
    carRealm = realm; 
}); 
関連する問題