2016-12-01 64 views
0

我需要標記對象以將它們關聯到單個唯一客戶端。 Java API中是否有任何屬性可用於唯一標識客戶端?任何區分Realm對象服務器客戶端的方法?

  • IP地址是不合適的;在不同的專用網絡上可能會有多個客戶端碰巧分配了相同的地址。
  • SyncUser不起作用;一個給定的用戶可以從多個同時的客戶端登錄。
  • SyncSession直覺上感覺不錯,但沒有任何標識屬性。
  • ObjectServerSession.nativeSessionPointer可能是我在找的東西,但沒有記錄,無論如何都無法訪問。

編輯:通過反思,同樣需要能否得到滿足與SyncUser的hashCode()toJson(),當且僅當我可以保證每個用戶只能登錄入一次。

+1

'nativeSessionPointer'絕對不是你在找什麼,這是一個內存地址在JNI層的一些對象。我認爲默認情況下唯一的實際標識符是SyncUser,否則數據可以存儲某種生成的設備特定ID。但我不確定,我沒有跟蹤所有與ROS相關的內容。 – EpicPandaForce

+0

注意,謝謝。我會嘗試找到一種方法讓應用程序識別它是來自同一用戶標識的併發登錄,並將其自身置於只讀模式或其他方式。 –

+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(); 

值得一提的是,有沒有必要包括所有的谷歌遊戲服務只是爲了獲得該功能。下面的依賴關係沒有問題,並且沒有通過64k DEX限制。

compile 'com.google.android.gms:play-services-iid:10.0.1' 
相關問題