it-swarm.com.ru

Как определить цвет iPhone 5c?

После анонса iPhone 5c мне интересно, если кто-нибудь знает API, как получить цвет iPhone 5c? Я уверен, что каждому будет удобно загружать соответствующую цветовую схему пользовательского интерфейса в цвет устройства. 

Я подумываю о том, чтобы обернуть его в нечто вроде категории UIDevice, которая вернет UIColor.

Обновление: @ ColinE и @Ortwin Gentz ​​ указал на наличие частных вызовов метода экземпляра UIDevice для него.

Обратите внимание, что в случае iPhone 5c, что вы действительно ищете, это deviceEnclosureColor, так как deviceColor всегда будет возвращать # 3b3b3c, так как это передний цвет.

подпись метода:

-(id)_deviceInfoForKey:(struct __CFString { }*)arg1

Категория UIDevice для этого:

@interface UIDevice (deviceColour)

- (id)_deviceInfoForKey:(struct __CFString { }*)arg1;
- (NSString*)deviceColourString_UntilAppleMakesItPublic;
- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic;


@end

@implementation UIDevice (deviceColour)

- (NSString*)deviceColourString_UntilAppleMakesItPublic
{
    return [self _deviceInfoForKey:@"DeviceColor"];
}

- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic
{
    return [self _deviceInfoForKey:@"DeviceEnclosureColor"];
}


@end
40
ambientlight

Существует частный API для получения как DeviceColor, так и DeviceEnclosureColor. В случае iPhone 5c интересной частью является цвет корпуса (цвет устройства = цвет спереди всегда # 3b3b3c).

UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString(@"deviceInfoForKey:");
if (![device respondsToSelector:selector]) {
    selector = NSSelectorFromString(@"_deviceInfoForKey:");
}
if ([device respondsToSelector:selector]) {
    NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}

Я написал об этом в блоге и предоставил пример приложения:

http://www.futuretap.com/blog/device-colors/

Предупреждение: как уже упоминалось, это частный API. Не используйте это в сборках App Store.

8
Ortwin Gentz

Цвет устройства (используется для?) Должен быть закодирован в серийном номере устройства. У меня нет устройства для тестирования, пока оно официально не выпущено, но я думаю, что решение будет похоже на это:

Типичный формат iPhone SN выглядит следующим образом: AABCCDDDEEF

AA = идентификатор фабрики и машины
B = Год производства (9 - это 2009/2019, 0 - это 2010/2020, 1 - это 2011 и т.д.)
CC = Производство Неделя (01 - 1-я неделя B, 11 - 11-я неделя B и т.д.)
DDD = Уникальный идентификатор
EE = цвет (A4 = черный)
F = размер (S = 16 ГБ, T = 32 ГБ)

[Источник]

Более подробная информация о старых методах здесь


Однако я хотел бы отметить, что я ожидаю, что не существует поддерживаемого метода получения серийного номера. Предполагая, что вы хотите знать эту информацию только для того, чтобы вы могли настроить свой пользовательский интерфейс, я бы просто ввел опцию пользователя или попросил их выбрать цвет их устройства при первом запуске (или какой-то другой ранней точке приложения). пользовательская жизнь)

13
James Webster

Несколько человек в Твиттере цитируют следующий метод :

[[UIDevice currentDevice] _deviceInfoForKey:@"DeviceColor"]

Хотя я не подтвердил это сам.

3
ColinE

Это может помочь вам ...

UIDevice *device = [UIDevice currentDevice];
    SEL selector = NSSelectorFromString([device.systemVersion hasPrefix:@"7"] ? @"_deviceInfoForKey:" : @"deviceInfoForKey:");
    if ([device respondsToSelector:selector]) {
        NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@",
              [device performSelector:selector withObject:@"DeviceColor"],
              [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
    }

Ссылка: Определение цвета iPhone/iPad/iPod touch?

0
Krupal Ghorpade