2017-06-13 58 views
1

我正在創建一個Cordova移動應用程序,該應用程序將擁有一個本地數據庫,該數據庫將存儲一些用戶選擇的設置。我也將發送用戶首選項到服務器。科爾多瓦應用程序 - 如何檢測它是否是相同的設備/帳戶

我希望即使用戶刪除應用程序並重新安裝,用戶首選項仍然存在。
如果偏好持續存在於用戶擁有的多個設備上(通過他們的Google Play帳戶或他們的Apple ID),也是可取的,但這並不重要。

我不希望用戶需要爲我的應用程序創建一個帳戶。

一個選項是獲取設備的UDID並使用它重新連接到「相同」的帳戶,但我知道多次安裝後實際上並不可靠。

理想可能就像Google Play帳戶和iTunes帳戶一樣。我見過使用它的Android遊戲和Apple應用程序。是否有一個Cordova插件可以訪問這兩者?

什麼是跨平臺應用程序的一個很好的簡單解決方案,以知道它是否與以前運行在同一設備上運行?

+0

我想知道爲什麼這個信息(UUID或IMEI號)不能存儲在服務器端的第一次訪問,然後可以參考任何後續訪問?這種方式的實施將是愚蠢的證明,我們不必真的擔心應用程序卸載 – Gandhi

+0

@Gandhi - iOS不給開發人員訪問UUID(https://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-現在做什麼),也不IMEI(https://stackoverflow.com/questions/19927160/finding-imei-number-using-objective-c) – kris

+0

你檢查了這個鏈接 - https:// stackoverflow。 com/questions/21878560/how-to-preserve-identifierforvendor-in-ios-after-uninstalling-ios-app-on-device%3E有辦法解決這個問題 – Gandhi

回答

1

深挖這個問題後,我能得到一個現成的插件,它應該能夠解決這個問題 - UniqueDeviceID plugin

插件聲稱,該ID將保持相同的應用程序卸載後。但是,在應用更新後,我可以看到有人面臨issue,因爲它返回不同的ID。一些解決方案也發佈在同一問題評論上。儘管如此,這是我能找到的與OP最接近的要求匹配的唯一插件。即使需要做一些調整來解決一些問題,我覺得這個插件應該是一個起點。希望能幫助到你。乾杯

+0

Thanks @Gandhi - 我剛剛在iOS和Android設備上嘗試了這個插件 - 刪除然後重新安裝應用程序 - 在第二次運行時,它在每臺設備上報告與第一次運行相同的UUID。我意識到這可能不是百分之百的萬無一失,並感謝你與記錄的問題的聯繫,但它大多數時間對我來說是一個足夠好的解決方案。 – kris

+0

@kris很高興幫助。乾杯 – Gandhi

1

對於iOS:

您可以通過使用this library做到這一點(或只是實現它在你的代碼自己使用)。這個過程的uid保存在設備的keystore將是相同的,即使應用程序被卸載並再次安裝多次。您也可以使用iCloud synchronization爲此用戶使用相同的uid

對於Android的:

SO answer是一個很好的解決方案。儘管如果用戶閃動手機,它可能會改變。如果您對每個設備都有一個唯一的ID非常關鍵,那麼imei將是您在Android手機中的不錯選擇,但它需要READ_PHONE_STATE權限。要通過設備同步這個id,您需要將它映射到類似登錄信息等內容。據我所知,沒有這種映射就無法做到。

Cordova使用這些解決方案,您需要把這個代碼庫(即.jar.framework文件),並創建一個插件爲您Cordova應用程序調用這些庫(假設你命名的返回方法的getUid()方法唯一標識符getUid)。

相關問題