Как я могу получить внутреннее имя на iOS?
Мне нужно получить информацию о процессоре на iOS. Я делаю это с помощью кода iPhone8,1 (это iPhone 6s), но iPhone 6s, 6s plus и iPhone SE имеют два разных процессора: один от Samsung(N69uAP), а другой от TSMC (N69AP). Мне нужно знать, какой процессор используется в телефоне, который я использую, кто-нибудь знает, как я могу их отличить в этом случае? Единственное, что я знаю, это то, что эти коды их различают (N69uAP и N69AP), но я не знаю, как их получить. Это то, что я делаю на старых iPhone, которые имеют только один процессор на модель:
if (([platform isEqualToString:@"iPhone7,1"]) ||([platform isEqualToString:@"iPhone7,2"]))
return @"T7000";
//this is iPhone 6
На сайте я получил информацию об айфонах: https://www.theiphonewiki.com/wiki/Models
2 ответа
Просто идея, но может быть sysctl
может помочь. Бег sysctl
на моем Mac возвращает такую информацию (среди многих других строк):
$ sysctl -A | grep cpu
...
hw.cputype: 7
hw.cpusubtype: 8
hw.cpufamily: 280134364
hw.cpufrequency: 2600000000
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz
machdep.cpu.family: 6
machdep.cpu.model: 70
machdep.cpu.extmodel: 4
machdep.cpu.extfamily: 0
...
Я не проверял, доступна ли та же информация на iOS, но я думаю, что стоит попробовать. Статья Мэтта Галлахера Сбор системной информации в Swift с помощью sysctl может быть полезен для получения информации о том, как звонить sysctl
, Он нацелен на Swift, но звонить по нему еще проще sysctl
в Objective-C.
Пример кода просто для получения внутреннего имени, например iPhone7,1
:
#import <sys/utsname.h>
@interface UIDevice (InternalName)
- (NSString*) internalModelName;
@end
@implementation UIDevice (InternalName)
- (NSString*) internalModelName {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}
@end