40 votes

Comment détecter la couleur d'un iPhone 5c?

Après l'iPhone 5c annonce, je suis curieux de savoir si quelqu'un sait d'une API comment avoir un iPhone 5c de couleur? Je suis sûr que tout le monde va trouver ça pratique de chargement d'un correspondant de l'INTERFACE utilisateur de couleurs pour la couleur de l'appareil.

Je suis en train de réfléchir en l'enveloppant dans quelque chose comme la UIDevice catégorie, qui sera de retour une UIColor.

Mise à jour: @ColinE et @Ortwin Gentz a indiqué la disponibilité de privé UIDevice exemple les appels de méthode pour cela.

Veuillez noter que dans le cas de l'iPhone 5c, ce que vous êtes vraiment la recherche est deviceEnclosureColor, comme deviceColor retournera toujours #3b3b3c, comme il est un devant de couleur.

signature de la méthode:

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

UIDevice catégorie:

@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

13voto

James Webster Points 16663

L'appareil de la couleur (bien?) être codée dans le numéro de série de l'appareil. Je n'ai pas un appareil pour tester avec eux pas encore officiellement publiés, mais j'imagine que la solution va être similaire à ceci:

Format standard de l'iPhone SN est comme suit: AABCCDDDEEF

AA = Usine et l'IDENTIFIANT de la Machine
B = Année de Fabrication (9 2009/2019, 0 est 2010/2020, 1 est 2011 et ainsi de suite)
CC = Production Semaine (01 est la semaine 1 de B, 11 est la semaine 11 de B et ainsi de suite)
DDD = L'Identificateur Unique De La
EE = Couleur (A4=noir)
F = size (S=16 GO, T=32 GO)

[Source]

Il n'y a plus d'informations sur les techniques anciennes ici


Je tiens à souligner cependant, que je m'attends il n'y a pas une méthode de prise en charge d'obtenir le numéro de série. En supposant que vous n'aimez savoir cette information de sorte que vous pouvez personnaliser votre INTERFACE utilisateur, je venais de mettre dans une option ou demandez-leur de choisir la couleur de leur appareil lors du premier démarrage (ou d'un autre stade de l'application de l'utilisateur de vie)

8voto

Ortwin Gentz Points 15102

Il y a une API privée pour récupérer à la fois l' DeviceColor et de la DeviceEnclosureColor. Dans le cas de l'iPhone 5c, la partie intéressante est l'enceinte de la couleur (le périphérique couleur = couleur avant est toujours #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"]);
}

J'ai blogué à ce sujet et de fournir un exemple d'application:

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

Avertissement: Comme mentionné, c'est une API privée. Ne pas l'utiliser dans l'App Store construit.

3voto

ColinE Points 36907

Un certain nombre de personnes sur Twitter ont cité la méthode suivante :

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

Bien que je ne l'ai pas confirmé moi-même.

0voto

Cela peut vous aider ...

 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"]);
    }
 

Réf: Détecter la couleur de l'iPhone / iPod touch?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X