- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#include <sys/types.h>
#include <sys/sysctl.h>
//获得设备型号
+ (NSString *)getCurrentDeviceModel
{
int
mib[
2
];
size_t len;
charchar *machine;
mib[
0
] = CTL_HW;
mib[
1
] = HW_MACHINE;
sysctl(mib,
2
, NULL, &len, NULL,
0
);
machine = malloc(len);
sysctl(mib,
2
, machine, &len, NULL,
0
);
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
free(machine);
// iPhone
if
([platform isEqualToString:@
"iPhone1,1"
])
return
@
"iPhone2G"
;
if
([platform isEqualToString:@
"iPhone1,2"
])
return
@
"iPhone3G"
;
if
([platform isEqualToString:@
"iPhone2,1"
])
return
@
"iPhone3GS"
;
if
([platform isEqualToString:@
"iPhone3,1"
])
return
@
"iPhone4"
;
if
([platform isEqualToString:@
"iPhone3,2"
])
return
@
"iPhone4"
;
if
([platform isEqualToString:@
"iPhone3,3"
])
return
@
"iPhone4"
;
if
([platform isEqualToString:@
"iPhone4,1"
])
return
@
"iPhone4S"
;
if
([platform isEqualToString:@
"iPhone5,1"
])
return
@
"iPhone5"
;
if
([platform isEqualToString:@
"iPhone5,2"
])
return
@
"iPhone5"
;
if
([platform isEqualToString:@
"iPhone5,3"
])
return
@
"iPhone5c"
;
if
([platform isEqualToString:@
"iPhone5,4"
])
return
@
"iPhone5c"
;
if
([platform isEqualToString:@
"iPhone6,1"
])
return
@
"iPhone5s"
;
if
([platform isEqualToString:@
"iPhone6,2"
])
return
@
"iPhone5s"
;
if
([platform isEqualToString:@
"iPhone7,2"
])
return
@
"iPhone6"
;
if
([platform isEqualToString:@
"iPhone7,1"
])
return
@
"iPhone6Plus"
;
if
([platform isEqualToString:@
"iPhone8,1"
])
return
@
"iPhone6s"
;
if
([platform isEqualToString:@
"iPhone8,2"
])
return
@
"iPhone6sPlus"
;
if
([platform isEqualToString:@
"iPhone8,3"
])
return
@
"iPhoneSE"
;
if
([platform isEqualToString:@
"iPhone8,4"
])
return
@
"iPhoneSE"
;
if
([platform isEqualToString:@
"iPhone9,1"
])
return
@
"iPhone7"
;
if
([platform isEqualToString:@
"iPhone9,2"
])
return
@
"iPhone7Plus"
;
//iPod Touch
if
([platform isEqualToString:@
"iPod1,1"
])
return
@
"iPodTouch"
;
if
([platform isEqualToString:@
"iPod2,1"
])
return
@
"iPodTouch2G"
;
if
([platform isEqualToString:@
"iPod3,1"
])
return
@
"iPodTouch3G"
;
if
([platform isEqualToString:@
"iPod4,1"
])
return
@
"iPodTouch4G"
;
if
([platform isEqualToString:@
"iPod5,1"
])
return
@
"iPodTouch5G"
;
if
([platform isEqualToString:@
"iPod7,1"
])
return
@
"iPodTouch6G"
;
//iPad
if
([platform isEqualToString:@
"iPad1,1"
])
return
@
"iPad"
;
if
([platform isEqualToString:@
"iPad2,1"
])
return
@
"iPad2"
;
if
([platform isEqualToString:@
"iPad2,2"
])
return
@
"iPad2"
;
if
([platform isEqualToString:@
"iPad2,3"
])
return
@
"iPad2"
;
if
([platform isEqualToString:@
"iPad2,4"
])
return
@
"iPad2"
;
if
([platform isEqualToString:@
"iPad3,1"
])
return
@
"iPad3"
;
if
([platform isEqualToString:@
"iPad3,2"
])
return
@
"iPad3"
;
if
([platform isEqualToString:@
"iPad3,3"
])
return
@
"iPad3"
;
if
([platform isEqualToString:@
"iPad3,4"
])
return
@
"iPad4"
;
if
([platform isEqualToString:@
"iPad3,5"
])
return
@
"iPad4"
;
if
([platform isEqualToString:@
"iPad3,6"
])
return
@
"iPad4"
;
//iPad Air
if
([platform isEqualToString:@
"iPad4,1"
])
return
@
"iPadAir"
;
if
([platform isEqualToString:@
"iPad4,2"
])
return
@
"iPadAir"
;
if
([platform isEqualToString:@
"iPad4,3"
])
return
@
"iPadAir"
;
if
([platform isEqualToString:@
"iPad5,3"
])
return
@
"iPadAir2"
;
if
([platform isEqualToString:@
"iPad5,4"
])
return
@
"iPadAir2"
;
//iPad mini
if
([platform isEqualToString:@
"iPad2,5"
])
return
@
"iPadmini1G"
;
if
([platform isEqualToString:@
"iPad2,6"
])
return
@
"iPadmini1G"
;
if
([platform isEqualToString:@
"iPad2,7"
])
return
@
"iPadmini1G"
;
if
([platform isEqualToString:@
"iPad4,4"
])
return
@
"iPadmini2"
;
if
([platform isEqualToString:@
"iPad4,5"
])
return
@
"iPadmini2"
;
if
([platform isEqualToString:@
"iPad4,6"
])
return
@
"iPadmini2"
;
if
([platform isEqualToString:@
"iPad4,7"
])
return
@
"iPadmini3"
;
if
([platform isEqualToString:@
"iPad4,8"
])
return
@
"iPadmini3"
;
if
([platform isEqualToString:@
"iPad4,9"
])
return
@
"iPadmini3"
;
if
([platform isEqualToString:@
"iPad5,1"
])
return
@
"iPadmini4"
;
if
([platform isEqualToString:@
"iPad5,2"
])
return
@
"iPadmini4"
;
if
([platform isEqualToString:@
"i386"
])
return
@
"iPhoneSimulator"
;
if
([platform isEqualToString:@
"x86_64"
])
return
@
"iPhoneSimulator"
;
return
platform;
}
|
获取设备信息总结 。
1、获取设备的信息 。
1
2
3
4
5
6
|
UIDevice *device = [[UIDevice alloc]
int
];
NSString *name = device.name;
//获取设备所有者的名称
NSString *model = device.name;
//获取设备的类别
NSString *type = device.localizedModel;
//获取本地化版本
NSString *systemName = device.systemName;
//获取当前运行的系统
NSString *systemVersion = device.systemVersion;
//获取当前系统的版本
|
2、获取设备的唯一标示符 。
1
|
NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
|
3、为系统创建一个随机的标示符 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
(NSString*) createUUID
{
NSString *id = [[NSUserDefaults standardUserDefaults] objectForKey:@
"UUID"
];
//获取标识为"UUID"的值
if
(id == nil)
{
if
([[[UIDevice currentDevice] systemVersion] floatValue] >
6.0
)
{
NSString *identifierNumber = [[NSUUID UUID] UUIDString];
//ios 6.0 之后可以使用的api
[[NSUserDefaults standardUserDefaults] setObject:identifierNumber forKey:@
"UUID"
];
//保存为UUID
[[NSUserDefaults standardUserDefaults] synchronize];
}
else
{
CFUUIDRef uuid = CFUUIDCreate(NULL);
CFStringRef uuidString = CFUUIDCreateString(NULL, uuid);
//ios6.0之前使用的api
NSString *identifierNumber = [NSString stringWithFormat:@
"%@"
, uuidString];
[[NSUserDefaults standardUserDefaults] setObject:identifierNumber forKey:@
"UUID"
];
[[NSUserDefaults standardUserDefaults] synchronize];
CFRelease(uuidString);
CFRelease(uuid);
}
return
[[NSUserDefaults standardUserDefaults] objectForKey@
"UUID"
];
}
return
id;
}
|
4、获取当前屏幕分辨率的信息 。
1
2
3
4
|
CGRect rect = [[UIScreen mainScreen] bounds];
CGFloat scale = [[UIScreen mainScreen].scale];
CGFloat width = rect.size.width * scale;
CGFloat height = rect.size.height * scale;
|
5、获取运营商的信息 。
需要先导入头文件 。
1
2
|
#
import
<CoreTelephony/CTCarrier.h>
#
import
<CoreTelephony/CTTelephonyNetworkInfo.h>
|
创建对象 。
1
|
CCTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
|
获取运行商的名称 。
1
2
|
CTCarrier *carrier = [info subscriberCellularProvider];
NSString *mCarrier = [NSString stringWithFormat:@
"%@"
,[carrier carrierName]];
|
获取当前网络的类型 。
ios7之后可以按照以下方式获取。方便而且类型多 。
1
|
NSString *mConnectType = [[NSString alloc] initWithFormat:@
"%@"
,info.currentRadioAccessTechnology];
|
类型有以下:
1
2
3
4
5
6
7
8
9
10
11
|
CTRadioAccessTechnologyGPRS
//介于2G和3G之间,也叫2.5G ,过度技术
CTRadioAccessTechnologyEdge
//EDGE为GPRS到第三代移动通信的过渡,EDGE俗称2.75G
CTRadioAccessTechnologyWCDMA
CTRadioAccessTechnologyHSDPA
//亦称为3.5G(3?G)
CTRadioAccessTechnologyHSUPA
//3G到4G的过度技术
CTRadioAccessTechnologyCDMA1x
//3G
CTRadioAccessTechnologyCDMAEVDORev0
//3G标准
CTRadioAccessTechnologyCDMAEVDORevA
CTRadioAccessTechnologyCDMAEVDORevB
CTRadioAccessTechnologyeHRPD
//电信使用的一种3G到4G的演进技术, 3.75G
CTRadioAccessTechnologyLTE
//接近4G
|
ios7之前的话apple给我们提供了Reachability来获取.
首先要导入SystemConfiguration.framework,把下载下来的Reachability.h和Reachability.m加进项目中 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Reachability *reach = [Reachability reachabilityWithHostName:@
"www.apple.com"
];
switch
([reach currentReachabilityStatus])
{
case
NotReachable:
//没有连接上
//do something
break
;
case
ReachableViaWiFi:
//通过wifi连接
//do something
break
;
case
ReachableViaWWAN:
//通过GPRS连接
//do something
break
;
default
: <span style=
"white-space:pre"
> </span>
//未知情况
//do something
break
;
}
|
6、获取当前信号的强弱 。
这个貌似没有给出官方的api,但是网上有人说可以用私有的api实现,但是通不过appStore的审核,方法如下:
利用linux下动态库显式调用api的函数。先包含头文件 #import <dlfcn.h> 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
(
int
) getSignalLevel
{
voidvoid *libHandle = dlopen(
"/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"
,RTLD_LAZY);
//获取库句柄
int
(*CTGetSignalStrength)();
//定义一个与将要获取的函数匹配的函数指针
CTGetSignalStrength = (
int
(*)())dlsym(libHandle,
"CTGetSignalStrength"
);
//获取指定名称的函数
if
(CTGetSignalStrength == NULL)
return
-
1
;
else
{
int
level = CTGetSignalStrength();
dlclose(libHandle);
//切记关闭库
return
level
}
}
|
7、设备震动 。
需要加入AudioToolbox framework,导入头文件 #import <AudioToolbox/AudioToolbox.h> 。
在需要震动的地方添加代码:
1
|
AudioServicesPlaySystemSound ( kSystemSoundID_Vibrate) ;
|
但是貌似这个不支持传入震动时间和模式,自己去控制吧.
8、获取电池的相关信息 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
@implementation
BatterMonitor
//获取电池当前的状态,共有4种状态
-(NSString*) getBatteryState {
UIDevice *device = [UIDevice currentDevice];
if
(device.batteryState == UIDeviceBatteryStateUnknown) {
return
@
"UnKnow"
;
}
else
if
(device.batteryState == UIDeviceBatteryStateUnplugged){
return
@
"Unplugged"
;
}
else
if
(device.batteryState == UIDeviceBatteryStateCharging){
return
@
"Charging"
;
}
else
if
(device.batteryState == UIDeviceBatteryStateFull){
return
@
"Full"
;
}
return
nil;
}
//获取电量的等级,0.00~1.00
-(
float
) getBatteryLevel {
return
[UIDevice currentDevice].batteryLevel;
}
-(
void
) getBatteryInfo
{
NSString *state = getBatteryState();
float
level = getBatteryLevel()*
100.0
;
//yourControlFunc(state, level); //写自己要实现的获取电量信息后怎么处理
}
//打开对电量和电池状态的监控,类似定时器的功能
-(
void
) didLoad
{
[[UIDevice currentDevice] setBatteryMonitoringEnable:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:
@selector
(getBatteryInfo:) name:UIDeviceBatteryStateDidChangeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:
@selector
(getBatteryInfo:) name:UIDeviceBatteryLevelDidChangeNotification object:nil];
[NSTimer scheduledTimerWithTimeInterval:
0
.5f target:self selector:
@selector
(getBatteryInfo:) userInfo:nil repeats:YES];
}
@end
|
9、app中打开一个网页 。
这个比较简单,直接用提供的接口openURL即可.
1
2
|
NSString *url = @
"www.apple.com"
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
|
10、app中打开另一个app 。
打开另一个app还是可以通过openURL来实现。但是要分两种情况。第一种是启动内置的应用,一般的电话,浏览器,短信和 。
邮件可以直接调用并添加参数,譬如 。
1
2
3
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"tel://10086"
]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"mailto://devprograms@apple.com"
]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"sms://10086"
]];
|
第二种情况是要打开自己开发的app,这种情况则要为将要打开的app注册一个URL协议。这个可以在项目的文件info.plist中注册.
主要操作为:
Step1. 右键,选择“Add Row” 。
Step2. Key值选择“URL types” 。
Step3. 打开“Item 0″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.fcplayer.testHello”).
Step4. 在“Item 0”下再加一行.
Step5. 选择“URL Schemes” 作为Key.
Step6. 输入你的URL协议名 (例如“testHello://” 应写做“testHello”)。如果有必要,你可以在这里加入多个协议.
其实在打开的时候只需要URL Schemes即可,URL identifier是可选项。如果需要传送参数,可以在URL Schemes://添加你的参数,格式和网页开发的传递参数差不多。(又或者URL Schemes://URL identifier@添加的参数)关键是要和接收参数方定义好处理的方式。然后在需要打开的地方添加代码:
1
2
|
NSString *url = @
"URL Schemes的路径"
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
|
以上所述是小编给大家介绍的iOS获取当前设备型号等信息包含iPhone7和iPhone7P,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
最后此篇关于iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P的文章就讲到这里了,如果你想了解更多关于iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果我使用 NSUserDefaults 存储应用程序的设置,是否有任何方法可以使我的应用程序的设置“隐藏”,以免显示在 iPhone 上的常规设置应用程序中?我知道还有其他工具,例如 mySetti
我按照该网站的教程进行操作: http://theappleblog.com/2008/08/04/tutorial-build-a-simple-rss-reader-for-iphone/ 为了制
我通过 localisableString 和仅适用于 NSLocale 方法的不同 xib 更改 iPhone 的语言来完成本地化,但应用程序的要求是通过更改应用程序设置 View 中的语言来本地化
我试图弄清楚 iPhone 是否可以通过无线或蓝牙连接到另一台非 iPhone 设备,但发现了相互冲突的信息。我发现的大部分内容都是在 SDK 3.0 版本发布之前发现的,当时这肯定是不可能的。查看堆
This question already has answers here: Closed 7 years ago. Possible Duplicate: How to detect iPhone
当我在模拟器上运行我的应用程序时,每次都会生成白色的空白屏幕。但是当我在底部黑色 iPhone 按钮退出应用程序后,重新进入应用程序后 View 将可见。然后应用程序照常运行。 但是当我将它加载到我的
我的意思是两台 iPhone 设备应该通过蓝牙或 WiFi 连接,并且一台设备的 UI 应该扩展到另一台 iPhone 设备(不共享屏幕)。我们有办法在 iOS 中执行此操作吗? 最佳答案 Bump
如何通过宏检测设备型号?我使用过类似的东西,但模拟器上的结果总是 IS_IPHONE_5 #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInt
我目前有一个应用程序要求用户维护 VPN 隧道。加载时我检查 VPN 隧道是否可用。 我想知道是否有任何方法可以显示 UIAlertView,单击“确定”后,用户将进入 iPhone 主设置屏幕,以便
我正在开发一个 iPhone 客户端应用程序,它允许用户对各种服务进行评分。无需注册或登录。 要求是用户不能重复对服务进行评分(尽管可以更改其评分)。从目前的情况来看,该应用程序可以被删除、重新安装,
比如说,我点击一个 iphone 应用程序图标,启动时它将创建一个 .app 文件。那么是否可以从该应用程序调用另一个 iphone 应用程序。或者我们可以在该 .app 文件中执行一些操作,例如它将
真的有可能让iPhone静音模式独立于iPhone App吗? 这个应用程序"Talking Carl"让我很困惑。我的 iPhone 处于静音模式。每当我打开这个应用程序时。应用程序声音处于开启模式
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
如果我想编写一些自定义 iPhone 应用程序,但不一定通过 App Store 分发它们,是否可以在不加入 iPhone 开发者计划的情况下实现? 假设我只是想为自己编写一些小实用程序并将其放入我的
人们对 Unity 或 Torque Engine 等游戏引擎有何看法和/或体验?如果您是 iPhone 游戏开发新手,是否值得学习其中一种引擎?这些引擎生成的应用程序与使用 sdk 的 native
您能否在未安装 XCode 开发工具的计算机上分发 iPhone 应用程序以在 iPhone 模拟器中进行测试?可以直接在电脑上安装模拟器进行测试吗? 我有一组测试人员,他们不是开发人员,除了能够运行
我想在我的越狱设备上构建并安装我的应用程序,而无需支付 iPhone 开发者计划所需的 99 美元。我有 Rock 和 Cydia...最简单的方法是什么(如果可能的话)? 谢谢。 最佳答案 这是一个
我想测试一个网站,看看它如何与 iPhone 配合使用,但我没有 iPhone 或 iPod touch。有没有一种方法可以让我在不拥有网站的情况下测试网站的运行情况? 我真正想要的是修复 Stack
简单地说;我的 99 美元能给我带来什么我无法免费获得的东西? 好吧,好吧,听起来是个愚蠢的问题,但苹果网站对我来说并不清楚。 我的预感是,您可以在 99 岁时向应用程序商店提交应用程序,但您可以免费
我是一名注册的 iOS 开发人员。如何将我的 iPhone 应用程序转移到我的个人 iPhone? 最佳答案 用于测试?只需选择您的设备而不是模拟器即可。 关于iphone - 如何将我的 iPhon
我是一名优秀的程序员,十分优秀!