2013-04-23 129 views
0

我正在製作一些應用程序,這將主要是用戶驅動的,當然這意味着他們將成爲麻煩製造者,他們可能會使用髒話或更糟的有效數據將錯誤數據輸入到它中(即改變發誓的單詞)禁止移動設備?

當然會採取措施來遏制這種情況,但在一天結束的時候我希望可以選擇從我的應用程序中禁止某人。

我的第一個想法是通過電子郵件地址禁止他們的帳戶。我也在想,也許最重要的是禁止他們的設備。

我的問題是什麼是唯一的ID我可以從他們的手機上使用,如果他們使用

Andriod 
Iphone 
Blackberry 
Windows Phone 7/8 

,是多麼獨特呢?它可以很容易地改變?

+0

'獨一無二' 是ungradable形容詞。絕對不可能限定。 – NickT 2013-04-23 19:08:03

回答

1

對於Windows Phone,您應該可以使用DeviceExtendedProperties。具體來說就是DeviceUniqueId屬性。

儘管如此,正如他們在那篇文章中所說的那樣,如果您使用設備ID來禁止用戶,那麼該設備的未來用戶將被禁止出現在您的應用中,即使他們沒有做錯任何事。

0

所有這些設備都有具有唯一MAC地址的網絡接口,根據定義,MAC地址是固定的 - MAC地址被燒入硬件,並且不容易被欺騙,特別是在移動設備上。我會散列MAC地址並將其用作密鑰。一旦蘋果禁止使用UDID,在iOS上很常見的做法。

+0

我讀了一些關於UDID的內容,但是他們沒有禁止它們。哈希它只是保持安全我猜有點像密碼?我認爲你的代碼改變了mac地址,但我想你說的很難做到,而不是像個人電腦那樣。 – chobo2 2013-04-23 20:30:32

+0

你把它哈希到「匿名化」數據和所有爵士樂。特別是有一些關於蘋果公司擁有龐大的數據庫,每個人的MAC地址等的文章。關於變化 - 如果你正在編寫一個非常安全的應用程序,如銀行應用程序,我會說做別的事情(可能是捆綁的東西到用戶帳戶)。對於一個普通的應用程序,我會說這足以作爲一個唯一的標識符。 – 2013-04-23 21:22:26

1

有兩個標識符可以一起用來標識特定的設備和用戶。

的DeviceUniqueId和WindowsLiveAnonymousId

第一個是設備,並且指出,誰使用禁止用戶後,器件也將被禁止。

WindowsLiveAnonymousId對用戶是唯一的。我已經在3個獨立的設備上看到了相同的標識符,並且用戶LiveId總是相同的。

我使用以下兩種方法來獲得這些ID識別遊戲玩家的領袖護板:

//Note: to get a result requires ID_CAP_IDENTITY_DEVICE 
// to be added to the capabilities of the WMAppManifest 
// this will then warn users in marketplace 

public static byte[] GetDeviceUniqueId() 
{ 
    byte[] result = null; 
    object uniqueId; 
    if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId)) 
     result = (byte[])uniqueId; 
    return result; 
} 

// NOTE: to get a result requires ID_CAP_IDENTITY_USER 
// to be added to the capabilities of the WMAppManifest 
// this will then warn users in marketplace 

public static string GetWindowsLiveAnonymousId() 
{ 
    string result = String.Empty; 
    object anid; 
    if (UserExtendedProperties.TryGetValue("ANID", out anid)) 
    { 
     if (anid != null && anid.ToString().Length >= (AnidLength + AnidOffset)) 
     { 
      result = anid.ToString().Substring(AnidOffset, AnidLength); 
     } 
    } 
    return result; 
} 

它們被用作這樣的:

string deviceUniqueId = String.Empty; 
for (int i = 0; i < GetDeviceUniqueId().GetLength(0); i++) 
{ 
    deviceUniqueId += GetDeviceUniqueId().GetValue(i); 
} 

DeviceUniqueIDTextBlock.Text = deviceUniqueId; 
WindowsLiveAnonymousIDTextBlock.Text = GetWindowsLiveAnonymousId().ToString(CultureInfo.InvariantCulture); 

我做了一個帖子去年五月約獲取WP7上的系統信息。此代碼在這裏找到:http://www.adambenoit.com/applications/system-info-windows-phone/

希望這可以幫助。