Поиск номера 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
. Если я это сделаю, яблоко отклонит мое приложение?
Ответы
Ответ 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.