Подтвердить что ты не робот

Поиск номера IMEI с помощью Objective-C

Мне нужно найти способ получить номер IMEI устройства iPhone. Этот вопрос не является дубликатом.

Я прошел через несколько форумов, включая SO, и не повезло найти ответ.

Некоторые говорят, что Apple не позволяет разработчикам видеть номер IMEI (SO post), а некоторые говорят использовать вместо него UDID (Сообщение SO). Некоторые говорят, что UDID устарел (в iOS 7).

Мне нужно знать следующее:

1.) Разрешает ли Apple разработчикам получить номер IMEI устройства?

2.) Как я могу программно это сделать?

3.) В случае, если Apple не разрешит разработчикам собирать номер IMEI, они предоставляют какой-либо другой уникальный номер для устройства?

4.) Некоторые предлагают использовать Telephony framework. Если я это сделаю, яблоко отклонит мое приложение?

4b9b3361

Ответ 1

Apple больше не позволяет идентифицировать устройство.

UDID, MAC-адрес и все другие идентификаторы устройств больше не доступны или не разрешены Apple.

Apple предлагает вам использовать UUID (который вам понадобится для хранения себя или): identifierForVendor или advertisingIdentifier.

Apple теперь также отклоняет приложение, которое использует advertisingIdentifier и не показывает какие-либо рекламные приложения.

Любые средства для получения номера IMEI - это использование закрытых методов, что также больше не разрешено Apple. И ваше мобильное приложение может/будет отклонено из-за этого.

Ответ 2

К сожалению, нет способа получить уникальный идентификатор для устройства, которое всегда будет оставаться неизменным. Apple больше не позволяет вам получить доступ к UDID. И в iOS 7 MAC-адреса всех устройств возвращают одно и то же значение, поэтому это уже не полезно.

Однако iOS теперь предоставляет доступ к двум типам идентификаторов, которые могут использоваться для идентификации устройства. Это:

  • Идентификатор поставщика - [UIDevice identifierForVendor]. Это уникальный идентификатор, который одинаковый для всех приложений одного и того же поставщика или компании. Он останется прежним, если у пользователя есть хотя бы одно приложение от поставщика, установленного на их устройстве. Поэтому, если у вас есть 3 приложения, идентификатор поставщика останется таким же, если пользователь не удалит все три приложения и не переустановит. Это не так полезно, если у вас есть только одно приложение - если пользователь удалит его, а затем переустановит, он изменится.

  • Идентификатор рекламодателя - [UIDevice advertisingIdentifier]. Это уникальный идентификатор, предназначенный для рекламных целей. Но если вы используете его для рекламных целей, им, по большей части, все равно. В большинстве случаев рекламный идентификатор не изменится, даже если пользователь удалит и переустановит приложение. Однако в настройках iOS есть опция reset рекламный идентификатор, который изменит его. Это означает, что пользователи могут отказаться от любой рекламной информации, которая была собрана о них. Но это очень сложная настройка, и я сомневаюсь, что многие пользователи сделают это достаточно часто, чтобы это было проблемой для вас.

Ответ 3

Вы можете получить IMEI с помощью частных фреймворков. Посмотрите Question, но, вероятно, ваше приложение будет отклонено из магазина приложений.

Если вы хотите получить какой-либо идентификатор устройства для использования в своем приложении, вы должны использовать свойство uniqueIdentifier, определенное в классе UIDevice

(Доступно в iOS 6.0 и новее):

NSString *UDID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

Ответ 4

Если вы хотите получить IMEI, нет способа (на устройстве, не имеющем вредоносного кода). Если вы хотите, чтобы пользователь узнал этот ответ. Пожалуйста, обратите внимание на всю документацию/ответы, написанные до iOS7, поскольку все изменилось.

Ответ 5

Вы можете сохранить UUID в связке ключей и использовать его как уникальный номер. Это не изменится, пока пользователь не перезагрузит iOS.

Ответ 6

вы не можете получить код IMEI, но можете использовать uuid. thats unique

в swift 2

 let DeviceID = UIDevice.currentDevice().identifierForVendor!.UUIDString

и в быстрой 3

 let DeviceID = UIDevice.current.identifierForVendor!.uuidString

goog luck.