2016-12-01 8 views
0

私は個々の一意のクライアントに関連付けるためにオブジェクトにタグを付ける必要があります。 Java APIに、クライアントを一意に識別するために使用できるプロパティがありますか?Realm Object Serverクライアントを区別する方法はありますか?

  • IPアドレスは不適切です。異なるプライベートネットワーク上に同じアドレスが割り当てられた複数のクライアントが存在する可能性があります。
  • SyncUserは機能しません。特定のユーザーは複数の同時クライアントからログオンできます。
  • SyncSession直感的には正しいと感じていますが、識別子プロパティはありません。
  • ObjectServerSession.nativeSessionPointerはおそらく私が探しているものですが、文書化されておらず、どんな場合でもアクセスできません。

EDIT:反射時私は、各ユーザーが一度のみでログインしている可能性が保証場合に限っ、同じ必要性は、SyncUserのhashCode()またはtoJson()で満たされる可能性があります。

+1

'nativeSessionPointer'はあなたが探しているものではありません。これはJNIレイヤーのオブジェクトのメモリアドレスです。私は、デフォルトでは唯一の実際の識別子がSyncUserであると考えています。そうでなければ、データは何らかの種類の生成されたデバイス固有のIDを保存できます。しかし、私はよくわからない、私はすべてのROS関連のものを追跡していない。 – EpicPandaForce

+0

ありがとう、ありがとう。私は、同じユーザーIDからの同時ログインであることをアプリケーションに認識させ、読み取り専用モードなどにする方法を見つけようとします。 –

+0

問題はhttps://github.com/realm/realm-java/issues/3865のように聞こえる – geisshirt

答えて

0

feature request hereを転記した後、Realmの従業員は、代わりにUUIDを使用することを提案しました。

This link on identifiersが特に優れています。

とにかく、現時点で最良の答えはAndroid instance-ID implementation instructionsに従っているようです。

IIDを取得するためのコードは、最終的にはこのように見えた:

db.iid = InstanceID.getInstance(this).getId(); 

それだけでその機能を取得するにはGoogle Playのサービスのすべてを含める必要はありませんということは注目に値します。次の依存関係はうまくいき、64k DEXの制限を吹かない。

compile 'com.google.android.gms:play-services-iid:10.0.1' 
関連する問題