【问题标题】:How to tell if your code is running on an iPhone or an iPhone3G?如何判断您的代码是在 iPhone 还是 iPhone 3G 上运行?
【发布时间】:2010-10-15 20:06:53
【问题描述】:

我正在尝试确定我的代码是在 iPhone 还是 iPhone3G 上运行。我的第一次尝试是在 UIKit 中使用 UIDevice 类,但 iPhone 和 iPhone3G 都返回相同的响应:

NSLog([[UIDevice currentDevice] name]); // Name of the phone as named by user
NSLog([[UIDevice currentDevice] uniqueIdentifier]); // A GUID like string
NSLog([[UIDevice currentDevice] systemName]); // "iPhone OS" 
NSLog([[UIDevice currentDevice] systemVersion]); // "2.2.1"
NSLog([[UIDevice currentDevice] model]); // "iPhone" on both devices
NSLog([[UIDevice currentDevice] localizedModel]); // "iPhone" on both devices

这些是 UIDevice 允许您查询的唯一参数。

我在 Foundation Framework 中看了一些,但还没有找到合适的调用。

我确定我可以查询某些硬件(例如位置服务中的某些内容),但这似乎是一种 hack。有谁知道确定这一点的简单方法?

【问题讨论】:

    标签: ios iphone


    【解决方案1】:

    我的猜测是 iPhone 上的某些功能在您的软件所关注的 iPhon3G 上没有。我的建议是查询特定硬件,而不是根据平台更改软件行为。

    例如。而不是通过询问这是一个关于 GPS 可用性的 iPhone 或 iPhone3G 查询来检查 GPS 的可用性,然后从那里开始。这样你的代码就可以在任何平台上运行(iphone/ipod touch/iphone 3G)

    【讨论】:

    • 感谢哈菲兹的建议。正如我在上面对 Steve Rowe 的评论中提到的,这纯粹是为了记录目的,所以我真的想确定实际的平台是什么。
    【解决方案2】:

    iPhone 运行 OS X。Here's 如何确定您在 Macintosh 桌面上的硬件平台。 Here's 如何在 iPhone 上使用。完全一样。

    简而言之,sysctlbyname("hw.machine", str, sz, 0, 0) 会将平台名称写入str。这恰好分别是 iPhone 和 iPhone 3G 的“iPhone1,1”或“iPhone1,2”。

    【讨论】:

    • 仅供参考,对于 09 年以来好奇的人来说,iPhone 4 显示为 iPhone3,1。
    • @Jonny iPhone 3GS 将自己标识为“iPhone2,1”,iPhone 4 将自己标识为“iPhone3,1”。您应该可以在 Google 上自己找到这些信息。
    • 这是在 iOS 4.2 SDK 的 中,所以它“应该”被视为一个公共 API。但是,在提交时应根据应用规则仔细权衡您的使用方式。
    【解决方案3】:

    我不是 iPhone 开发人员,但检查底层平台而不是平台功能几乎总是错误的选择。如果 iPhone 获得了您需要的功能,您仍然无法运行。你也有可能在下一代 iPhone 4.0(或其他任何名称)上做出错误的决定。

    【讨论】:

    • 这纯粹是为了记录目的,特别是记录谁在使用我们的应用程序以及他们在什么样的平台上。所以在这种情况下,平台上没有选择或分支,只是一个日志。感谢史蒂夫的建议。
    • 好的。在这种情况下,检查应该没问题。
    • 您可以出于性能原因使用它。 iPhone 3G 和 iPhone 4 之间的功率差异很大。您可以在其中为 iPhone 4 用户打包更多效果。
    猜你喜欢
    • 2023-03-03
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多