获取手机设备的详细信息

简介

在iOS项目中难免会涉及到获取当前iPhone设备的各种信息, 包括设备名称,硬件信息,系统版本,屏幕尺寸和分辨率, 运营商,电池情况, 检测SIM卡等等.
尤其是获取设备唯一标示, 使用的地方比较多, 但方法可行的并不多, 获取唯一标示方法将在以后的文章中说明.

获取设备相关信息

//设备相关信息的获取
    NSString *strName = [[UIDevice currentDevice] name];
    NSLog(@"设备名称:%@", strName);//eg: "My iPhone"
    
    NSString *strModel = [[UIDevice currentDevice] model];
    NSLog(@"设备模式:%@", strModel);// eg: @"iPhone", @"iPod touch"
    
    NSString *strLocModel = [[UIDevice currentDevice] localizedModel];
    NSLog(@"本地设备模式:%@", strLocModel);// localized version of model
    
    NSString *strSysName = [[UIDevice currentDevice] systemName];
    NSLog(@"系统名称:%@", strSysName);// eg: @"iOS"
    
    NSString *strSysVersion = [[UIDevice currentDevice] systemVersion];
    NSLog(@"系统版本号:%@", strSysVersion);// eg: @"4.0"
    
    NSString *strId = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    NSLog(@"设备唯一标识:%@", strId);//UUID,5.0可用, 6.0后可以获取, 但每次启动应用 UUID 会不一样, 基本就废了

获取硬件信息

    NSString *hardware = [DeviceUtil hardwareDescription];
    NSLog(@"%@",hardware);

获取屏幕尺寸、宽度、高度

    /** 获取屏幕尺寸、宽度、高度 */
    CGSize size = [UIScreen mainScreen].bounds.size;
    //图片的倍数
    NSInteger multiple = [UIScreen mainScreen].scale;
    //获取设备分辨率
    CGSize resolution = [[UIScreen mainScreen] currentMode].size;
    
    NSLog(@"%f,%f,%ld",size.width,resolution.width,multiple);

获取网络状态

- (void)getNetworkReachabilityByAFN
{
    //AFNetworking通过呼叫某个服务器来监测网络状态,因此建议呼叫大型门户网站
    //创建一个请求队列的管理对象
    AFHTTPRequestOperationManager * manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];
    //监控网络状态
    [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"网络未连接");
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"3G网络");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI网络");
                break;
            default:
                break;
        }
    }];
    //启动监控
    [manager.reachabilityManager startMonitoring];
}
- (void)getNetworkReachability
{
    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;  
    }
}

}

获取当前信号强弱

这个貌似没有给出官方的api,但是网上有人说可以用私有的api实现,但是通不过appStore的审核,方法如下:
利用linux下动态库显式调用api的函数。先包含头文件 #import <dlfcn.h>
- (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  
    }
}

获取电池情况

-(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;
}

打印结果

这里写图片描述

检测设备是否安装sim卡

- (BOOL)isSIMInstalled
{
    CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
    CTCarrier *carrier = [networkInfo subscriberCellularProvider];
    
    if (!carrier.isoCountryCode) {
        NSLog(@"No sim present Or No cellular coverage or phone is on airplane mode.");
        return NO;
    }
    return YES;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,我们可以使用`navigator`对象来获取手机设备信息。`navigator`对象是一个全局对象,提供了与浏览器相关的信息。 要获取手机设备信息,我们可以使用以下属性和方法: 1. `navigator.userAgent`:这是一个只读属性,返回代表浏览器用户代理字符串。用户代理字符串可以包含设备名称、操作系统版本和浏览器类型等信息。我们可以通过解析这个字符串来获取设备信息。 ```javascript var userAgent = navigator.userAgent; ``` 2. `navigator.platform`:这也是一个只读属性,返回操作系统平台。虽然它无法提供具体的设备型号,但可以指示是哪个平台,如"Win32"表示Windows、"MacIntel"表示MacOS、"Linux i686"表示Linux等。 ```javascript var platform = navigator.platform; ``` 3. `navigator.vendor`:这个只读属性返回浏览器的供应商名称。对于手机设备,可能会返回厂商名称,如"Apple Computer, Inc."表示苹果设备。 ```javascript var vendor = navigator.vendor; ``` 4. `window.innerWidth`和`window.innerHeight`:这两个只读属性返回浏览器窗口的宽度和高度,可以通过这些属性间接判断设备的屏幕尺寸。 ```javascript var screenWidth = window.innerWidth; var screenHeight = window.innerHeight; ``` 以上是获取手机设备信息的一些方法,我们可以使用它们来了解用户的设备特性,以便在网页上进行相应的调整和优化。当然,由于每个设备的表示方式都不完全一样,因此解析和判断可能需要进行一些兼容性处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值