有什么方法可以区分 Realm 对象服务器客户端?
Any way to differentiate Realm Object Server clients?
我需要标记对象以将它们与各个独特的客户相关联。 Java API 中是否有任何 属性 可以用来唯一标识客户端?
- IP地址不合适;不同专用网络上可能有多个客户端碰巧分配了相同的地址。
SyncUser
不起作用;给定用户可以从多个同步客户端登录。
SyncSession
直觉上感觉是对的,但是没有任何标识符 属性.
ObjectServerSession.nativeSessionPointer
可能是我要找的东西,但没有记录,而且在任何情况下都无法访问。
编辑: 经过反思,SyncUser 的 hashCode()
或 toJson()
可以满足相同的需求,前提是我可以保证每个用户只登录一次。
发布 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'
我需要标记对象以将它们与各个独特的客户相关联。 Java API 中是否有任何 属性 可以用来唯一标识客户端?
- IP地址不合适;不同专用网络上可能有多个客户端碰巧分配了相同的地址。
SyncUser
不起作用;给定用户可以从多个同步客户端登录。SyncSession
直觉上感觉是对的,但是没有任何标识符 属性.ObjectServerSession.nativeSessionPointer
可能是我要找的东西,但没有记录,而且在任何情况下都无法访问。
编辑: 经过反思,SyncUser 的 hashCode()
或 toJson()
可以满足相同的需求,前提是我可以保证每个用户只登录一次。
发布 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'