检测 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 可以同时检索 DeviceColor
和 DeviceEnclosureColor
。
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 型号在颜色代码位置都有3N
; 3NP
表示“黑色 16GB 3Gs”,3NQ
表示“白色 16GB 3Gs”。最初的 (2G) iPhone 也使用所有三个位置来指示尺寸(没有颜色选项)。
这里已经有一些关于 SO 的问题可以帮助您获取设备的序列号。
【讨论】:
【参考方案5】:出于调试目的,我编制了一个更全面的可能deviceInfoForKey:
键列表。
要注意的有趣键(对于这个问题)是DeviceRGBColor
DeviceEnclosureRGBColor
。这些值似乎是一个整数,以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 滑动事件 javascript