Уникальный идентификатор устройства для смартфонов - PullRequest
1 голос
/ 03 марта 2012

Бизнес-контекст варианта использования заключается в том, что мы создаем внутренний сервер (мультитанентный), который будет обслуживать приложения с разных платформ (iOS, Android, Windows phone 7, BlackBerry, телефоны j2me). Компания хотела бы наградить пользователей первой установкой партнерских приложений. Таким образом, бизнес хочет отследить отдельных пользователей, впервые устанавливающих приложение, от пользователей, переустанавливающих (удаляющих и устанавливающих). Таким образом, мы ожидаем, что партнерские мобильные приложения отправят уникальный идентификатор (используя спецификацию уникального идентификатора, который мы здесь определим) на наш внутренний сервер через веб-сервис после установки, и сервер проверит его и вернет вознаграждение, если это первая установка .

Итак, в идеале все, что мы хотим определить здесь, - это уникальные спецификации идентификаторов устройств со следующими свойствами.

  1. Он должен быть уникальным на всю жизнь в этой категории устройств (например, все устройства iOS). Таким образом, такие вещи, как Factory Reset и т. Д., Не должны изменять идентификатор устройства.
  2. Нелегко подделать идентификатор. Например. Вы можете установить программный инструмент на устройстве, и после переустановки приложения идентификатор, который отправляет приложение, будет изменен.
  3. Базовая платформа предоставляет API для получения необходимой информации, упомянутой в спецификациях. То есть никаких частных API и т. Д., Поскольку приложения будут развернуты на открытых рынках (в магазине приложений и т. Д.).
  4. Спецификация должна быть действительной во всем мире, поскольку решение существует во всем мире. Следовательно, закон всех стран должен соблюдаться.
  5. Обратите внимание, что решение предназначено для всех устройств платформ; не только мобильные телефоны на SIM-карте, но даже мобильные устройства не на SIM-карте (ipod touch, ipad). [Таким образом, уникальные номера IMEI отсутствуют на мобильных устройствах без SIM-карты, но на них могут быть установлены приложения]

С нетерпением ждем новаторских умов, чтобы обсудить это.

Спасибо, что прочитали это.

Ответы [ 5 ]

3 голосов
/ 04 марта 2012

Вы сражаетесь в проигрышной битве, «доверяя» устройству, чтобы оно давало вам неповторимый уникальный идентификатор, любое взломанное iOS-устройство позволяет вам изменять UDID, я уверен, что это в случае с Android (и, вероятно, с Windows Phone)MAC-адреса бесполезны, так как они могут быть изменены в программном обеспечении.

Даже такие вещи, как IMEI и IMSI, могут быть подделаны.«Лучшим» решением было бы иметь сторону входа на сервер, где вы (доверенная сторона) можете устанавливать свойства для учетной записи пользователя.

Доверие другой стороне предоставить вам непротиворечивую или «не мошенническую» информацию - это путь к катастрофе, и если вы «отдаете вознаграждение», как вы говорите, это будет дорогостоящая катастрофа.

Пересмотрите свой бизнес-кейс.

2 голосов
/ 04 апреля 2012

Я предлагаю использовать IMSI, где это возможно.IMSI - это уникальный идентификатор абонента, доступный программным способом на большинстве платформ, кроме Windows Phone 7. Он связан с SIM-картой / MSISDN и поэтому изменится при изменении SIM / MSISDN.С IMSI вы будете идентифицировать конечного пользователя, а не телефон, который он использует.

2 голосов
/ 03 марта 2012

Для Windows Phone 7 device unique id можно получить доступ через DeviceExtendedProperties class:

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

Описание из MSDN: 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 голос
/ 03 марта 2012

Apple осуждает UDID.Так что сейчас есть, но в будущем, вероятно, не будет.

С Android устройства с SIM-картами обычно имеют уникальный идентификатор, но он не всегда доступен (например, устройства без SIM-карты) и GoogleРуководство заключается в том, чтобы создать свой собственный уникальный идентификатор.Вы можете отправить его в облачное хранилище, чтобы оно всегда было там.http://developer.android.com/guide/topics/data/backup.html

Другой альтернативой для Android является запрос разрешения доступа к учетной записи в вашем приложении и доступ к имени учетной записи Google пользователя, то есть к его адресу Gmail.Вы можете использовать их учетную запись электронной почты Gmail (используется для Android Market и т. Д.) В качестве идентификатора.Это дает преимущество работы на всех их устройствах, например, если у кого-то есть телефон и два планшета Android, их можно идентифицировать как одного человека.

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

Думаю, было бы лучше задать вопросдля каждой платформы, поскольку ответы почти полностью зависят от платформы.

0 голосов
/ 04 марта 2012

Существуют разные способы идентификации устройства. Для мобильных телефонов, в первую очередь, необходимо учитывать международный идентификатор мобильного оборудования или IMEI. Для более новых телефонов также есть идентификатор мобильного оборудования или MEID. Для устройств iOS, включая не мобильные телефоны, такие как iPod, существует уникальный идентификатор устройства или UDID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...