在iphone的开发环境下,有时候需要获取的设备信息的时候是比较困难,没有和android一样的源码开放,但是通过其他的很多途径,我们可以获取到许多意想不到的信息。
NetworkController 是一个私有的类,其中有许多很有意思的功能。可以判断网络,网卡,飞行模式,EDGE等等的许多网络相关的功能。
/*
* Generated by class-dump 3.1.1.
*
* class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2006 by Steve Nygard.
*/
@class NSString, NSTimer;
@interface NetworkController : NSObject
{
struct __SCDynamicStore *_store;
NSString *_domainName;
unsigned int _waitingForDialToFinish:1;
unsigned int _checkedNetwork:1;
unsigned int _isNetworkUp:1;
unsigned int _isFatPipe:1;
unsigned int _edgeRequested:1;
NSTimer *_notificationTimer;
}
+ (id)sharedInstance;
- (void)dealloc;
- (id)init;
- (BOOL)isNetworkUp;
- (BOOL)isFatPipe;
- (BOOL)inAirplaneMode;
- (id)domainName;
- (BOOL)isHostReachable:(id)fp8;
- (id)primaryEthernetAddressAsString;
- (id)IMEI;
- (id)edgeInterfaceName;
- (BOOL)isEdgeUp;
- (void)bringUpEdge;
- (void)keepEdgeUp;
- (void *)createPacketContextAssertionWithIdentifier:(id)fp8;
@end
获取设备是否处在飞行模式,于前面我写的动态加载私有库一篇的通过私有库设置飞行模式的开关配合,相当好用。
+ (BOOL)getAirplaneMode
{
id nc = [NetworkController sharedInstance];
return [nc inAirplaneMode];
}
这里获取IMEI不给力,没测试通过,不过后面会介绍另一种获取的方式,是直接获取硬件信息的方式比较注重底层,不在关注frameworkes。
// 私有,以下方法真机程序会崩溃,需要 Message.framework
// id nc = [NetworkController sharedInstance];
// return [nc IMEI];
转载于:https://blog.51cto.com/arthurchen/577940