Как я могу получить внутреннее имя на 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
Другие вопросы по тегам