Нахождение номера IMEI с использованием Objective-C

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

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

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

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

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

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

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

(Доступно в iOS 6.0 и более поздних версиях):

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

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

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

Другие вопросы по тегам