2012-03-03 145 views
1

用例的業務環境是我們正在構建一個後端服務器(multi-tanent),該服務器將爲來自多個平臺(iOS,Android,Windows phone 7,BlackBerry,j2me電話)。該公司希望在第一次安裝合作應用時對用戶進行獎勵。因此,企業希望跟蹤第一次應用安裝用戶重新安裝(刪除&安裝)用戶。因此,我們希望合作的移動應用程序在安裝&服務器後會將唯一標識符(使用我們在此決定的唯一標識符規範)發送到我們的後端服務器& &如果首次安裝返回獎勵。智能手機設備的唯一設備標識符

所以,理想情況下,我們只想在這裏定義是唯一設備標識符規範用以下屬性..

  1. 它應該是人生唯一久,設備類別(例如所有iOS設備)下。所以,Factory Reset等工具不應該改變設備標識符。
  2. 欺騙標識符不應該很容易。例如。你可以通過設備&上的軟件工具重新安裝應用程序,應用程序發回的標識符會發生變化。
  3. 底層平臺提供API來檢索規範中提到的必要信息。也就是說,沒有私人API等,因爲應用程序將通過開放市場(App Store等)進行部署。
  4. 由於解決方案是全球性的,因此該規範應該是全球真實的。因此,應該尊重所有國家的法律。
  5. 請注意,解決方案想要定位所有平臺的設備;不僅僅是基於SIM卡的手機,甚至還有基於非SIM卡的移動設備(ipod touch,ipad)。 [所以,唯一的IMEI號碼不在非SIM移動設備上,但可以在其上安裝應用程序]

期待創新的大腦來討論這一點。

感謝您閱讀本文。從MSDN

object DeviceUniqueID; 
byte[] DeviceIDbyte=null;  
if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out DeviceUniqueID)) 
DeviceIDbyte = (byte[])DeviceUniqueID; 
string DeviceID = Convert.ToBase64String(DeviceIDbyte); 
MessageBox.Show(DeviceID); 

描述:

回答

3

你正在爲一個失敗的戰鬥'相信'該設備給你一個一致的唯一ID,任何越獄的iOS設備可以讓你改變UDID,我相信這是與Android的情況下(也可能是Windows手機),MAC地址是無用的,因爲它們可以在軟件中改變。

即使像IMEI和IMSI這樣的東西也可能是僞造的。 '最好'的解決方案應該是擁有一個登錄服務器端,您(可信任方)可以在用戶帳戶上設置屬性。

相信對方會給你提供一致的或「非欺詐性」的信息是災難的祕訣,如果你按照你的說法「放棄獎勵」,這將是一場代價高昂的災難。

修改您的商業案例。

+0

嗯,我知道IMEI可以僞造(設備標識符),但IMSI? IMSI應該至少與您的'最佳'解決方案一樣安全,如果不是更安全的話。 – Yusufk 2012-04-04 07:03:21

+0

問題是,原始海報假定設備會給出正確的IMEI或IMSI,因爲他無法在設備上物理驗證IMEI/IMSI,而設備發送的IMEI/IMSI不能被信任爲有效。因此,如果您希望並相信設備(或任何第三方)向您提供有效信息,那麼絕對是錯誤地構建了您的產品。 – 2012-04-04 07:22:12

+0

IMEI是設備給你的東西,但IMSI會從SIM卡中查詢。我知道編輯IMEI的方法,它會覆蓋手機固件上存儲的值,但IMSI是網絡分配給SIM卡的內容,幾乎不可能覆蓋。 – Yusufk 2012-04-04 08:47:27

2

爲Windows Phone 7 device unique id可以通過DeviceExtendedProperties類訪問A unique hash for the device. This value will be constant across all applications and will not change if the phone is updated with a new version of the operating system.

1

蘋果被棄用UDID。所以現在有一個,但將來可能不會有。

使用Android時,帶有SIM卡的設備通常具有唯一的ID,但並不總是可用(例如無SIM卡的設備),Google的指導是創建您自己的唯一ID。您可以將它發送到雲存儲,以便它始終存在。 http://developer.android.com/guide/topics/data/backup.html

Android的另一種替代方法是在您的應用中請求帳戶訪問權限,並訪問用戶的Google帳戶名稱,即他們的Gmail地址。您可以使用他們的Gmail電子郵件帳戶(用於Android電子市場等)作爲標識符的一種形式。這有利於在所有設備上工作,例如,如果有人有手機和兩個Android平板電腦,則可以將其標識爲一個人。

AccountManager accountManager = AccountManager.get(myApplication); 
    Account[] accounts = accountManager.getAccountsByType("com.google"); 
    String gmailEmail = accounts[0].name.trim(); 

我認爲這將是更好地問一個問題每個平臺的答案几乎完全是特定於平臺。

+0

我們希望規範基於設備硬件信息而不是用戶帳戶。單純依靠用戶帳戶可能會造成欺詐。所以實際上我們將使用用戶身份(電子郵件)和設備身份的組合。我們認爲這可以幫助我們跟蹤特定應用的所有設備和平臺上的每個人的安裝情況,從而最大限度地減少欺詐用戶。雖然我們瞭解它不是100%的傻瓜證明。 – user653662 2012-03-03 08:26:25

+0

你會遇到的問題是,沒有辦法獲得保證工作的設備ID。 http://android-developers.blogspot.com/2011/03/identifying-app-installations.html – 2012-03-03 08:55:20

0

有不同的方法來識別設備。對於手機來說,一般來說,國際移動設備身份或IMEI是首先要考慮的事情。對於新手機,還有移動設備標識符或MEID。對於iOS設備(包括iPod等非手機設備),存在唯一設備ID或UDID。

2

我建議在可用的地方使用IMSI。 IMSI是除Windows Phone 7之外的大多數平臺上以編程方式提供的唯一訂閱者標識符。它與SIM卡/ MSISDN鏈接,因此將在SIM/MSISDN發生更改時更改。使用IMSI,您將識別最終用戶,而不是他們正在使用的手機。