执行环境
可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:
1 2 3 4 5 6 7 8 9 10 |
NSString *modelname = [[UIDevice currentDevice]model]; if ([modelname isEqualToString:@"iPhone"]) { // iPhone } if ([modelname isEqualToString:@"IPod Touch"]) { // iPod touch } if ([modelname isEqualToString:@"iPhone Simulator"]) { // iPhone Simulator } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#import <TargetConditionals.h> #if TARGET_OS_IPHONE // iPhone Device #endif #if TARGET_IPHONE_SIMULATOR // iPhone Simulator #endif #if !TARGET_IPHONE_SIMULATOR // iPhone Device #endif |
或:
if ([[UIDevicecurrentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
// iPhone and iPod touch style UI
} else {
// iPad style UI
}
iPhone 机器版本
可以通过 uname 函数取得当前机器的版本。例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
struct utsname u; uname(&u); NSString *machine = [NSString stringWithCString:u.machine]; if ([machine isEqualToString:@"iPhone1,1"]) { // iPhone 1G } if ([machine isEqualToString:@"iPhone1,2"]) { // iPhone 3G } if ([machine isEqualToString:@"iPhone2,1"]) { // iPhone 3GS } if ([machine isEqualToString:@"iPod1,1"]) { // iPod touch 1G } if ([machine isEqualToString:@"iPod2,1"]) { // iPod touch 2G } if ([machine isEqualToString:@"iPod3,1"]) { // iPod touch Late2009 } |
或者通过 sysctlbyname() 函数取得:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
- (NSString *) platform { size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); /* Possible values: "iPhone1,1" = iPhone 1G "iPhone1,2" = iPhone 3G "iPhone2,1" = iPhone 3GS "iPod1,1" = iPod touch 1G "iPod2,1" = iPod touch 2G */ NSString *platform = [NSString stringWithCString:machine]; free(machine); return platform; } |
iPhone OS 版本
可以使用 UIDevice 的属性 systemVersion 来得到。例子如下:
1 2 3 4 5 6 7 8 9 10 |
NSString *osversion = [UIDevice currentDevice].systemVersion; if ([osversion isEqualToString:@"2.1"]) { // iPhone } if ([osversion isEqualToString:@"2.2.1"]) { // iPod touch } if ([osversion isEqualToString:@"3.0"]) { // iPhone Simulator } |
这里有一个别人写好的类库,专门用来得到系统版本信息,用起来比较方便。
iPhone SDK 版本宏
就像在windows系统下用 WINVER 宏来判断 windows 系统版本一样,iPhone OS 中也有类似的宏。
1 2 3 4 |
// 当前系统支持的最小版本 __IPHONE_OS_VERSION_MIN_REQUIRED // 当前系统支持的最大版本 __IPHONE_OS_VERSION_MAX_ALLOWED |
比如用 iPhone OS SDK 3.1.2 编译的程序
1 2 |
__IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_3_0 __IPHONE_OS_VERSION_MAX_ALLOWED == __IPHONE_3_1 |
这时,我们可以在程序中使用下面类似的 $ifdef 语句:
1 2 3 4 5 |
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2 // iPhone OS SDK 3.0 以后版本的处理 #else // iPhone OS SDK 3.0 之前版本的处理 #endif |
又或者 iPhone OS SDK 4 推出的时候,可以:
1 2 3 4 5 6 7 8 9 |
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2 #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_1 // iPhone OS SDK 4.0 以后版本的处理 #else // iPhone OS SDK 3.0 ~ 4.0 版本的处理 #endif #else // iPhone OS SDK 3.0 之前版本的处理 #endif |
感谢:http://www.yifeiyang.net/iphone-development-techniques-of-environmental-chapter-7-distinguish-between-different-versions-of-the-iphone/
相关推荐
在iOS的开发过程中,每个版本会有多个内部构建版本,这些版本通常以字母数字组合的形式表示,如16B5059d,用于区分不同的更新和修复。这表明该Xcode包可能包含了针对这个iOS构建版本的调试工具和库,以支持开发者...
16E5181e是iOS 12.2的内部版本号,用于区分不同阶段的更新。 安装步骤如下: 1. 下载iOS 12.2的设备支持文件(12.2 (16E5181e))。 2. 打开Finder,找到Xcode应用程序,右键点击并选择“显示包内容”。 3. 进入路径...
iOS 习惯为秒,在 iOS sdk 中进行转换。 DSBridge 使用 dsBridge.registerAsyn方法中,不使用Promise,使用.then()写法。 dsBridge的注册方法:dsBridge.register,dsBridge.registerAsyn区分命名空间。 没有异步的 ...
这些文件可能包含证书、配置描述文件(Profile)或者设备支持文件,它们是Xcode连接并调试特定iOS版本设备所必需的。 总的来说,这个压缩包为开发者提供了一个方便的途径,让他们能够在iOS 12.1和12.2设备上进行...
APNs是Apple提供的一项服务,它允许开发者向已安装其应用程序的iOS、iPadOS、watchOS和macOS设备发送通知。这些通知可以是提醒、消息、更新或其他与应用程序相关的实时信息。 要使用APNs,开发者需要在Apple ...
这两个版本号通常是iOS的内部构建号,用于区分不同的更新迭代。 Xcode的真机调试是开发者进行应用程序测试的关键环节,它允许开发者在实际设备上运行和测试应用,以确保其在不同硬件和操作系统版本上的兼容性和性能...
2. **区分设备类型**:压缩包中的"iPhoneOS"和"IphoneSimulator"分别对应真机和模拟器的库文件。你需要根据项目的需求,选择合适的版本放置到正确的位置。通常,iPhoneOS文件用于真实设备,而iPhoneSimulator文件...
- 在创建App ID时,需要注意区分特定App ID和通配符App ID的使用场景,避免在不同的SDK版本中出现兼容性问题。 - 保持证书的有效性和安全性是非常重要的,确保定期更新证书并妥善保管相关的私钥。 #### 五、总结 ...
例如,对于移动设备,可能需要安装特定版本的Android SDK或iOS SDK。确保所有必要的编译工具、依赖库和开发环境已就绪。 2. **获取QT源码**:从QT官方网站下载适用于目标平台的源码,或者从Git仓库中克隆。不同平台...
极光推送(JPush)是阿里云推出的一款高效、稳定、便捷的移动推送服务,它可以帮助开发者实现向Android、iOS以及HarmonyOS等多平台设备推送通知和自定义消息。官方Demo是为开发者提供快速集成和理解JPush功能的实例...
- 操作系统:介绍了常见的电脑操作系统,如Windows、UNIX、Linux、苹果操作系统(macOS)、Chrome OS等,以及常见的手机操作系统,如Android、iOS、Symbian、Windows Phone、BlackBerry等。 - 数据库:区分了关系型...
- `sdkver`:SDK版本。 - `deviceid`:设备唯一标识。 - `channel`:渠道信息。 - `platform`:平台类型。 - `carrier`:运营商信息。 - `ua`:设备型号信息。 - `mac_wifi`:Wi-Fi MAC地址。 - `mac_3g`:3G MAC...
- **后台开发**:使用Cobol、JCL等技术,支持OS390平台以及其他操作系统。 - **中间件**:选择Websphere、Weblogic等,兼容Unix/Linux和Windows环境。 - **前端开发**:采用Eclipse、GWT等工具,兼容Unix/Linux和...