有什么方法可以区分Realm Object Server客户端?

时间:2016-12-01 18:22:39

标签: android realm realm-mobile-platform

我需要标记对象以将它们与各个唯一客户端相关联。我可以使用Java API中的任何属性来唯一标识客户端吗?

  • IP地址不合适;恰好在不同的专用网络上有多个客户端被分配了相同的地址。
  • INSERT INTO tbl_person (person_name,person_gender,person_address, person_placeofbirth,person_dateofbirth, person_religion,person_phonenumber,person_email, person_image,person_status) VALUES ('Fadilis', 'Male','Jl.kaliurang km 7', 'Solo','1991-3-24', 'islam','08996787262','fadil@gmail.com', 'fadil.jpg','aktif'); INSERT INTO tbl_user (username, password, person_id,role_id) VALUES ('Fadil', 'polisi',(select person_id FROM tbl_person where person_name = 'Fadilis'), (select role_id from ref_role where role_name = 'admin')); SELECT u.username, u.password, p.person_name , p.person_gender, p.person_address, p.person_placeofbirth, p.person_dateofbirth, p.person_religion, p.person_phonenumber, p.person_email, p.person_status, r.role_name from tbl_user u inner join tbl_person p on u.person_id = p.person_id inner join ref_role r on u.role_id = r.role_id 不起作用;给定用户可以从多个同时发生的客户端登录。
  • SyncUser直觉感觉正确,但没有任何标识符属性。
  • SyncSession可能就是我正在寻找的,但没有记录,无论如何都无法访问。

编辑:经过反思,SyncUser的ObjectServerSession.nativeSessionPointerhashCode()可以满足同样的需求,如果我可以保证每个用户只登录一次。

1 个答案:

答案 0 :(得分: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'