我需要标记对象以将它们与各个唯一客户端相关联。我可以使用Java API中的任何属性来唯一标识客户端吗?
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.nativeSessionPointer
或hashCode()
可以满足同样的需求,如果我可以保证每个用户只登录一次。
答案 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'