Получение типа машины и других сведений об оборудовании с помощью API-интерфейса Cocoa - PullRequest
5 голосов
/ 28 ноября 2011

В iOS существует класс UIDevice , который позволяет получить массу полезной информации о модели устройства, операционной системе и т. Д. *

Я ищу что-то эквивалентное на Mac. Я знаю о вызове system_profiler из командной строки, но даже настройка mini занимает несколько секунд, чтобы получить какую-либо информацию.

Меня интересуют быстрые способы получения типа устройства (Macbook Air, Mac Mini и т. Д.), Версии ОС и других подробных сведений о машине из приложения Mac. Детали будут использоваться в качестве нижнего колонтитула в сообщениях службы поддержки, отправленных из приложения. Есть ли какой-либо эквивалент UIDevice или другой быстрый способ получить некоторую информацию, которая может помочь описать компьютер пользователя?

Ответы [ 3 ]

21 голосов
/ 13 ноября 2012
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>

+(NSString *) machineModel
{
    size_t len = 0;
    sysctlbyname("hw.model", NULL, &len, NULL, 0);

    if (len)
    {
        char *model = malloc(len*sizeof(char));
        sysctlbyname("hw.model", model, &len, NULL, 0);
        NSString *model_ns = [NSString stringWithUTF8String:model];
        free(model);
        return model_ns;
    }

    return @"Just an Apple Computer"; //incase model name can't be read
}

Версия Swift (просто поменяйте местами hw.model для hw.machine) здесь https://stackoverflow.com/a/25467259/308315

1 голос
/ 08 августа 2013

Звонит ли system_profiler SPHardwareDataType, что вам нужно? Он возвращается очень быстро и возвращает некоторую базовую информацию об оборудовании. Вы можете узнать, какие другие данные вы можете запросить, позвонив по номеру system_profiler -listDataTypes. Я думаю, что другой кусок вашей головоломки будет system_profiler SPSoftwareDataType.

0 голосов
/ 28 ноября 2011

Нет встроенного класса устройств, как в iOS.

Вам понадобится Gestalt Manager для исследования операционной среды.

...