Possible Duplicate:
Determine device (iPhone, iPod Touch) with iOS

我正在制作一款利用iPhone(可能还有iPod touch第二代)的点对点蓝牙功能的游戏.然而,为了阻止用户try 在iPod第一代和iPhone2G上玩多人游戏,我需要判断特定的设备型号.

[[UIDevice currentDevice]型号]只会告诉我设备是"iPhone"还是"iPod touch".有没有办法判断具体的设备型号,比如:"iPhone3GS"、"iPod touch 1代"或其他什么.

EDIT:

UIDevice有一个类别(我认为它是由Erica Sadun创建的,我不认为这是值得称赞的),它使用以下代码来获得特定的设备型号.你可以在这里找到整个类别以及其他有用的东西:https://github.com/erica/uidevice-extension

#include <sys/types.h>
#include <sys/sysctl.h>

@implementation UIDevice (Hardware)

/*
 Platforms
 iPhone1,1 -> iPhone 1G
 iPhone1,2 -> iPhone 3G 
 iPod1,1   -> iPod touch 1G 
 iPod2,1   -> iPod touch 2G 
*/

- (NSString *) platform
{
  size_t size;
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
  char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
  free(machine);
  return platform;
}

这是可行的,使用此功能的应用程序最近已在AppStore中获得批准.

推荐答案

最完整的UIDevice(硬件)类别可能是http://github.com/erica/uidevice-extension/(埃里卡·萨顿(Erica Sadun)著):

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"

Ios相关问答推荐

无法结合 UIImageView 旋转动画和 tableView 部分重新加载

判断Apple LiveText是否可用?

如何从 scendelegate 打开我的标签栏控制器

Flutter:CocoaPods 的 specs 存储库过时,无法满足依赖关系

CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本

从 Xcode 11.1 升级到 Xcode 11.2 后,应用程序因 _UITextLayoutView 而崩溃

ITMS-90809:已弃用的 API 使用——Apple 将停止接受使用 UIWebView API 的应用提交

检测表在 iOS 13 上被取消

如何在 Flutter 中格式化日期时间

shouldChangeCharactersInRange 如何在 Swift 中工作?

获取文档文件夹中的文件列表

Localizable.strings - 无法读取数据,因为它的格式不正确

使用 Swift 4.0 编译的模块无法在 Swift 4.0.1 中导入

iOS Swift - 获取当前本地时间和日期时间戳

Xcode 9 Swift 语言版本 (SWIFT_VERSION)

Xcode 8.3.3“没有具有 iTunes Connect 访问权限的帐户”

iOS 11 - 键盘高度在键盘通知中返回 0

如何确定 WKWebView 的内容大小?

在 Swift 中,如何声明符合一个或多个协议的特定类型的变量?

'automaticallyAdjustsScrollViewInsets' 在 iOS 11.0 中已弃用