Мне было интересно, можно ли определить, что это за iPhone (например) на текущем устройстве? Я знаю, что можно получить модель,
NSString *deviceType = [[UIDevice currentDevice] model];
которая будет просто возвращать, есть ли у меня «iPhone» или «iPod», НО мне было интересно, можно ли определить / узнать, есть ли у меня iPhone 3GS против и iPhone 4 против iPhone 4S (на самом деле, все, что я действительно хочу сделать, это определить, есть ли у меня 3G или нет, потому что я делаю довольно интенсивные графические вещи) .
Так что да, дайте мне знать, спасибо!
ios
objective-c
iphone
ipad
Натан Френкель
источник
источник
Ответы:
ЛИБО попробуйте эту библиотеку: http://github.com/erica/uidevice-extension/ (Эрика Садун). (Библиотеке 7-8 лет, и, следовательно, она устарела)
(Образец кода):
ИЛИ Вы можете использовать этот метод:
Вы можете получить номер модели устройства, используя uname из sys / utsname.h. Например:
Objective-C
Свифт 3
Результат должен быть:
источник
Расширяя ответ OhhMee выше, я добавил несколько отказоустойчивых для поддержки будущих устройств, которые (пока) не включены в список:
Я также пропустил подробную информацию (например, «модель A1507, A1516, A1526 (Китай), A1529 | Global») и поместил ее в комментарии вместо этого, на случай, если вы захотите использовать ее как строки, обращенные к пользователю, а не выводить их из себя.
Изменить: этот ответ обеспечивает аналогичную реализацию с использованием Swift 2.
Изменить 2: Я только что добавил модели iPad Pro (оба размера). Для дальнейшего использования, номера моделей / и т.д. можно найти в вики iPhone .
Редактировать 3: Добавить поддержку iPhone XS, iPhone XS Max и iPhone XR.
Редактировать 4: Добавить поддержку для iPhone 11, iPhone 11 Pro и iPhone 11 Pro Max.
источник
deviceName
, когда собирался искатьcode
. Кто-то предложил редактирование, но я не смог одобрить его, пока другие не отклонили его, поэтому я исправил ответ сам. Спасибо тому, кто предложил это.Я создал файл plist, чтобы помочь вам получить полное имя для каждого устройства (исходный код в конце моего ответа)
Основываясь на ответе OhhMee , вы можете использовать его следующим образом:
Swift 4.0
Не забудьте добавить
#import <sys/utsname.h>
свой заголовок моста.Цель С
Файл plist:
источник
[[UIDevice currentDevice] model]
просто возвращаетiPhone
илиiPod
, вы не получите номера модели, которые позволили бы вам различать устройства разных поколений.Код этого метода:
И вызвать метод
[self getModel]
всякий раз, когда вам нужна модель, и вы получите, например: «iPhone5,1» для смешного тонкого и быстрого iPhone 5.Хорошей практикой является создание класса с именем
Utils.h/Utils.m
и помещением таких методов,getModel
чтобы вы могли получить эту информацию из любого места в вашем приложении, просто импортировав класс и вызвав его.[Utils getModel];
источник
Я оптимизировал реализацию NicolasMiari и добавил
Simulator
сюда:`` `
источник
Ниже приведен код для этого ( код может содержать не все строки устройства, я с другими парнями поддерживаю тот же код на GitHub, поэтому, пожалуйста, возьмите последнюю версию кода оттуда )
Objective-C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
источник
Категория для ухода от описания NSString
В общем, желательно избегать произвольных сравнений строк в вашем коде. Лучше обновить строки в одном месте и спрятать волшебную строку из вашего приложения. Я предоставляю категорию
UIDevice
для этой цели.Для моих конкретных потребностей мне нужно знать, какое устройство я использую, без необходимости знать особенности сетевых возможностей, которые можно легко получить другими способами. Таким образом, вы найдете более грубый,
enum
чем постоянно растущий список устройств.Обновление - это добавление устройства в перечисление и таблицу поиска.
UIDevice + NTNUExtensions.h
UIDevice + NTNUExtensions.m
источник
Имя устройства и имена компьютеров на основе iOS Real Device Hardware
Мое решение этой проблемы в основном похоже на ответ @NicolasMiari в этой теме. Отдельный служебный класс имеет предопределенный набор имен устройств и компьютеров, а затем в зависимости от имени реальной машины извлекает имя устройства.
Примечание. Этот ответ и связанный с ним проект GitHub были обновлены, чтобы идентифицировать текущие последние iPhone (iPhone 8, 8+, X) по состоянию на октябрь 2017 года. И это также работает на iOS11 . Пожалуйста, посетите репозиторий GitHub и посмотрите, и дайте мне обратную связь, если что-то не так.
Я добавил эту реализацию и несколько других удобных служебных методов в класс и поместил ее в этот репозиторий GitHub . А также вы можете найти актуальный список информации об устройстве на этой вики-странице .
Пожалуйста, посетите это и используйте это.
Обновить:
Вам может потребоваться импортировать sys framework,
источник
Swift 3 совместимый
источник
Это решение работает как для физических устройств, так и для симулятора iOS таким образом, что симулятор возвращает ту же модель, что и физическое устройство для модели, например, «iPhone10,6» для iPhone X (GSM), а не «x86_64».
Определение - Swift 4:
Использование:
источник
источник
Ниже функция отлично работает на iOS7 или более поздней версии в Swift
источник
Добавьте новый файл со следующим кодом и просто позвоните.
UIDevice.modelName
Он состоит из всех моделей, выпущенных до даты, включая iPhone 11 и Swift 5.0.источник
Для экономии времени других. Поскольку ответ принят, должен быть предложен ответ, предложить библиотеку, которая использует закрытый API, и мое приложение было отклонено из-за расширения uidevice только вчера! Я переключаюсь на библиотеку GBDeviceInfo, также установленную как pod, сейчас она выглядит красиво, поддерживается и обновляется до последних устройств.
источник
Swift 4 или позже
источник
ProcessInfo.processInfo.environment["SIMULATOR_DEVICE_NAME"]
достаточно.Почему бы не создать категорию. Не используйте проблему утечки безопасности метода malloc. Используйте безопасные функции.
Смотрите имплантации
источник
Если у вас есть список устройств (например, поддерживается @Tib выше в https://stackoverflow.com/a/17655825/849616 ), чтобы справиться с ним, если Swift 3 вы бы использовали:
Позже вы можете позвонить, используя
UIDevice.modelName()
.Дополнительные кредиты идут на @Tib (для plist), @Aniruddh Joshi (для
deviceSystemCode()
функции).источник
Как насчет использования ideviceinfo для получения этих значений? Должен быть в состоянии установить его, используя
brew install ideviceinfo
Затем запустите:
источник