检测 iPhone/iPad/iPod touch 的颜色?

Posted

技术标签:

【中文标题】检测 iPhone/iPad/iPod touch 的颜色?【英文标题】:Detecting Color of iPhone/iPad/iPod touch? 【发布时间】:2011-12-11 10:08:53 【问题描述】:

是否有任何方法或破解方法可以检测 ios 安装在什么颜色(黑色/白色)的 iPhone、iPad 或 iPod touch 上?

我想在黑色或白色设备的情况下加载相应的 UI 皮肤。

【问题讨论】:

不是一个好主意。使用深色模式,用户可以选择这些东西 @AlexH 在询问的时候,我没有看到将近 8 年后出现的黑暗模式。 :) 发生了很多变化。你还在从事这个项目吗? 【参考方案1】:

有一个私有 API 可以同时检索 DeviceColorDeviceEnclosureColor

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 构建中使用它。

【讨论】:

不错的发现!一个小建议:你应该使用[NSObject -respondsToSelector:]。当 iOS 8 发布时,您当前的逻辑可能无法正常运行。 这仍然会在 iOS 8 上使用旧的deviceInfoForKey:。我会检查两个选择器,看看它响应哪个。 @uchuugaka 我没有隐瞒它是私人的事实。但这是找回它的唯一方法。尽管如此,私有 API 还是有一些用例——例如内部企业应用程序。向 Apple 投诉(你可以欺骗 openradar.appspot.com/15209345),而不是拒绝我的回答! 亚伦,你是对的。我将代码改进为与 iOS 版本无关。 我投了反对票,因为您在建议使用私有 API 时没有指出使用私有 API 的后果。【参考方案2】:

这个问题的答案是(截至目前)并且个人而言我认为这不值得,因为如果最终用户使用皮肤会怎样还是他的 iPhone 的额外外壳?

我建议首先问用户“嘿,你的手机是什么颜色的?”然后做相应的事情。


此外,一项研究向我提供了此信息,我不确定它是否正确或是否会对您有所帮助。

序列号是关键:)

如果aabccdddeef是iPhone 4的序列号,ee代表颜色,(A4=黑色)。我希望你们中的一些人与你们一起检查这些信息,看看这是否属实。

【讨论】:

我有一个黑色的 iPhone 4S 和一个白色的...它们的倒数第二和第三个数字都是“TF”...(序列号:“C39GJ DTFC”和“C39GKDTF9”)。我们需要继续寻找。 此外,无法以编程方式检测序列号(至少通过使用已发布的 API)。所以序列号的方式是DoA。 感谢回复,非常感谢。在“hack”中,我的意思是序列号检查或类似的东西。我确实意识到当前 SDK 中没有 [IUDevice deviceColor] 东西。我正在做自己的研究并随时通知您。【参考方案3】:

值我的 2 美分 - 如果有人在寻找 iPhone 5c 的颜色,下面的颜色是从苹果网站上挑选的。

希望对大家有用:-)

iPhone 5c 颜色:

Green
R   179
G   243
B   142
HEX #B3F38E

Blue
R   123
G   195
B   252
HEX #7BC3FC

Yellow
R   255
G   243
B   141
HEX #FFF38D

Red
R   252
G   132
B   142
HEX #FF848E

White
R   239
G   239
B   239
HEX #EFEFEF

【讨论】:

【参考方案4】:

根据网络上散布的信息,设备的颜色编码在序列号中。 iFixit's blog 表示倒数第三和倒数第二个位置保存信息:xxxxxxxxCCx 对于 iPhone 4,A4 表示黑色。似乎没有人有白色 iPhone 4 的代码,这很奇怪。一个forum posting 表示它可能DZ。每个人似乎都只是在这里鹦鹉学舌地复制其他人的信息。

另一个网站mydigitallife.com 有一篇文章列出了各种旧型号的颜色代码。在某些情况下,必须一起读取三个位置以确定颜色。根据这个网站,所有 iPhone 3Gs 型号在颜色代码位置都有3N3NP 表示“黑色 16GB 3Gs”,3NQ 表示“白色 16GB 3Gs”。最初的 (2G) iPhone 也使用所有三个位置来指示尺寸(没有颜色选项)。

这里已经有一些关于 SO 的问题可以帮助您获取设备的序列号。

【讨论】:

【参考方案5】:

出于调试目的,我编制了一个更全面的可能deviceInfoForKey: 键列表。

要注意的有趣键(对于这个问题)是DeviceRGBColorDeviceEnclosureRGBColor。这些值似乎是一个整数,以0x00rrggbb 的形式表示 RGB 值。

这里是我找到的所有键供参考:

ActiveWirelessTechnology        
AirplaneMode        
assistant        
BasebandCertId        
BasebandChipId        
BasebandPostponementStatus        
BasebandStatus        
BatteryCurrentCapacity        
BatteryIsCharging        
BluetoothAddress        
BoardId        
BootNonce        
BuildVersion        
CertificateProductionStatus        
CertificateSecurityMode        
ChipID        
CompassCalibrationDictionary        
CPUArchitecture        
DeviceClass        
DeviceColor        
DeviceEnclosureColor        
DeviceEnclosureRGBColor        
DeviceName        
DeviceRGBColor        
DeviceSupportsFaceTime        
DeviceVariant        
DeviceVariantGuess        
DiagData        
dictation        
DiskUsage        
EffectiveProductionStatus        
EffectiveProductionStatusAp        
EffectiveProductionStatusSEP        
EffectiveSecurityMode        
EffectiveSecurityModeAp        
EffectiveSecurityModeSEP        
FirmwarePreflightInfo        
FirmwareVersion        
FrontFacingCameraHFRCapability        
HardwarePlatform        
HasSEP        
HWModelStr        
Image4Supported        
InternalBuild        
InverseDeviceID        
ipad        
MixAndMatchPrevention        
MLBSerialNumber        
MobileSubscriberCountryCode        
MobileSubscriberNetworkCode        
ModelNumber        
PartitionType        
PasswordProtected        
ProductName        
ProductType        
ProductVersion        
ProximitySensorCalibrationDictionary        
RearFacingCameraHFRCapability        
RegionCode        
RegionInfo        
SDIOManufacturerTuple        
SDIOProductInfo        
SerialNumber        
SIMTrayStatus        
SoftwareBehavior        
SoftwareBundleVersion        
SupportedDeviceFamilies        
SupportedKeyboards        
telephony        
UniqueChipID        
UniqueDeviceID        
UserAssignedDeviceName        
wifi        
WifiVendor        

【讨论】:

这些都是私有API 是的,它们都是私有的。如已接受的答案中所述,deviceInfoForKey: 是私有的。因此,所有这些键也是。【参考方案6】:

正如其他人所指出的,不,没有获取此信息的官方方式。 Apple 清楚地知道(同步时查看 iTunes),因此他们可以提供它。可能值得提出Radar。

【讨论】:

以上是关于检测 iPhone/iPad/iPod touch 的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

获取iPhone/iPad/iPod Touch硬件版本

iphone ipad ipod检测

iPhone / iPad / iPod 滑动事件 javascript

你能确定插入 iphone/ipad/ipod 耳机插孔的具体设备类型吗?

修复 iPhone/iPad/iPod 上的 CSS 悬停

如何确定 iphone / ipad / ipod / appletv 是不是较旧、较新或等于同系列的其他设备?