博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
阅读量:6815 次
发布时间:2019-06-26

本文共 4220 字,大约阅读时间需要 14 分钟。

hot3.png

// 硬盘容量

- ( float )getTotalDiskSpace

{

float totalSpace;

NSError * error;

NSDictionary * infoDic = [[ NSFileManager defaultManager ] attributesOfFileSystemForPath :[ self getHomeDirectory ] error : &error];

if (infoDic) {

NSNumber * fileSystemSizeInBytes = [infoDic objectForKey : NSFileSystemSize ];

totalSpace = [fileSystemSizeInBytes floatValue ]/ 1024.0f / 1024.0f / 1024.0f ;

return totalSpace;

} else {

NSLog ( @"Error Obtaining System Memory Info: Domain = %@, Code = %ld" , [error domain ], ( long )[error code ]);

return 0 ;

}

}

- ( NSString *)getHomeDirectory

{

NSString * homePath = NSHomeDirectory ();

return homePath;

}

/*

如何获取设备的总容量和可用容量

*/

+ ( NSNumber *)totalDiskSpace

{

NSDictionary *fattributes = [[ NSFileManager defaultManager ] attributesOfFileSystemForPath : NSHomeDirectory () error : nil ];

return [fattributes objectForKey : NSFileSystemSize ];

}

+ ( NSNumber *)freeDiskSpace

{

NSDictionary *fattributes = [[ NSFileManager defaultManager ] attributesOfFileSystemForPath : NSHomeDirectory () error : nil ];

return [fattributes objectForKey : NSFileSystemFreeSize ];

}

// 手机型号(这跟系统获取的不一样,这是获取iPhone5,4,6之类的)要导入

#import "sys/utsname.h"

+ ( NSString *)deviceString

{

// 需要 #import "sys/utsname.h"

struct utsname systemInfo;

uname (&systemInfo);

NSString *deviceString = [ NSString stringWithCString :systemInfo. machine encoding : NSUTF8StringEncoding ];

if ([deviceString isEqualToString : @"iPhone1,1" ])    return @"iPhone 1G" ;

if ([deviceString isEqualToString : @"iPhone1,2" ])    return @"iPhone 3G" ;

if ([deviceString isEqualToString : @"iPhone2,1" ])    return @"iPhone 3GS" ;

if ([deviceString isEqualToString : @"iPhone3,1" ])    return @"iPhone 4" ;

if ([deviceString isEqualToString : @"iPhone4,1" ])    return @"iPhone 4S" ;

if ([deviceString isEqualToString : @"iPhone5,2" ])    return @"iPhone 5" ;

if ([deviceString isEqualToString : @"iPhone3,2" ])    return @"Verizon iPhone 4" ;

if ([deviceString isEqualToString : @"iPod1,1" ])      return @"iPod Touch 1G" ;

if ([deviceString isEqualToString : @"iPod2,1" ])      return @"iPod Touch 2G" ;

if ([deviceString isEqualToString : @"iPod3,1" ])      return @"iPod Touch 3G" ;

if ([deviceString isEqualToString : @"iPod4,1" ])      return @"iPod Touch 4G" ;

if ([deviceString isEqualToString : @"iPad1,1" ])      return @"iPad" ;

if ([deviceString isEqualToString : @"iPad2,1" ])      return @"iPad 2 (WiFi)" ;

if ([deviceString isEqualToString : @"iPad2,2" ])      return @"iPad 2 (GSM)" ;

if ([deviceString isEqualToString : @"iPad2,3" ])      return @"iPad 2 (CDMA)" ;

if ([deviceString isEqualToString : @"i386" ])         return @"Simulator" ;

if ([deviceString isEqualToString : @"x86_64" ])       return @"Simulator" ;

NSLog ( @"NOTE: Unknown device type: %@" , deviceString);

return deviceString;

}

// 判读是 3g 还是 Wi-Fi 要导入#import" Reachability.h "

Reachability *reachbility=[ Reachability reachabilityWithHostName : @"www.baidu.com" ];    NetworkStatus status=[reachbility currentReachabilityStatus ];

NSString *netStr;

// 使用 WiFi 网络连接

if (status== ReachableViaWiFi )

{

netStr = @"wifi" ;

//[[NSUserDefaults standardUserDefaults]setObject:netStr forKey:@"network"];

}

else if (status == ReachableViaWWAN )

{

netStr = @"3g" ;

//[[NSUserDefaults standardUserDefaults]setObject:netStr forKey:@"network"];

}

NSLog ( @" 网络是: %@" ,netStr);

/* 关于获取运营商信息,需通过 CoreTelephony Framework 中的 CTTelephonyNetworkInfo 和 CTCarrier 类型。这些都在 iOS 4.0 后就有了。

import 必要的 header :

#import <CoreTelephony/CTCarrier.h>

#import <CoreTelephony/CTTelephonyNetworkInfo.h>

何判断当前网络的运营商

*/

// 用来辨别设备所使用网络的运营商

- ( NSString *)checkCarrier

{

NSString *ret = [[ NSString alloc ] init ];

CTTelephonyNetworkInfo *info = [[ CTTelephonyNetworkInfo alloc ] init ];

CTCarrier *carrier = [info subscriberCellularProvider ];

if (carrier == nil ) {

return @"0" ;

}

NSString *code = [carrier mobileNetworkCode ];

if ([code  isEqual : @"" ]) {

return @"0" ;

}

if ([code isEqualToString : @"00" ] || [code isEqualToString : @"02" ] || [code isEqualToString : @"07" ]) {

ret = @" 移动 " ;

}

if ([code isEqualToString : @"01" ]|| [code isEqualToString : @"06" ] ) {

ret = @" 联通 " ;

}

if ([code isEqualToString : @"03" ]|| [code isEqualToString : @"05" ] ) {

ret = @" 电信 " ;;

}

NSLog ( @"%@" ,ret);

return ret;

}

转载于:https://my.oschina.net/u/2252309/blog/373897

你可能感兴趣的文章
SQL Server 中心订阅模型(多发布单订阅)
查看>>
Vue父组件接收不到子组件$emit事件的原因分析
查看>>
工作总结的字体和格式要求
查看>>
CentOS 6.9永久设置静态路由表以及路由表常用设置
查看>>
解决Docker时区与主机时区不一致的问题
查看>>
思考与知识
查看>>
访问日志不记录静态文件 访问日志切割 静态元素过期时间
查看>>
idea中复制module和module中的蓝色tag出现的方法
查看>>
python中的面相对象
查看>>
Spring缓存注解@Cache使用
查看>>
去除wordpress的category各方法对比
查看>>
traceroute
查看>>
精通汇编语言,有兴趣一起搞破解的请进!
查看>>
C#缺省参数可以让代码变得更加简洁明了与时俱进心里敞亮了很多了
查看>>
【自然框架】js版的QuickPager分页控件 V2.0
查看>>
poj-2049 Finding Nemo *
查看>>
模块化编程本质探讨
查看>>
利用博客与视频分享和交流知识和经验
查看>>
js操作dom对象
查看>>
Windows2003服务器安全配置:先关闭不需要的端口(转自)
查看>>