生活随笔
收集整理的這篇文章主要介紹了
ios获取设备信息总结
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文轉(zhuǎn)載至 http://blog.csdn.net/decajes/article/details/41807977?
?
1、獲取設(shè)備的信息 [objc]?view plaincopy
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、獲取設(shè)備的唯一標(biāo)示符 [objc]?view plaincopy
NSString?*identifier?=?[[[UIDevice?currentDevice]?identifierForVendor]?UUIDString];?? 3、為系統(tǒng)創(chuàng)建一個(gè)隨機(jī)的標(biāo)示符 [objc]?view plaincopy
(NSString*)?createUUID??{??????NSString?*id?=?[[NSUserDefaults?standardUserDefaults]?objectForKey:@"UUID"];????????if(id?==?nil)??????{??????????if([[[UIDevice?currentDevice]?systemVersion]?floatValue]?>?6.0)??????????{??????????????NSString?*identifierNumber?=?[[NSUUID?UUID]?UUIDString];????????????????????????????[[NSUserDefaults?standardUserDefaults]?setObject:identifierNumber?forKey:@"UUID"];??????????????[[NSUserDefaults?standardUserDefaults]?synchronize];??????????}??????????else{??????????????CFUUIDRef?uuid?=?CFUUIDCreate(NULL);??????????????CFStringRef?uuidString?=?CFUUIDCreateString(NULL,?uuid);????????????????????????????????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、獲取當(dāng)前屏幕分辨率的信息 [objc]?view plaincopy
CGRect?rect?=?[[UIScreen?mainScreen]?bounds];??CGFloat?scale?=?[[UIScreen?mainScreen].scale];??CGFloat?width?=?rect.size.width?*?scale;??CGFloat?height?=?rect.size.height?*?scale;?? 5、獲取運(yùn)營商的信息需要先導(dǎo)入頭文件
[objc]?view plaincopy
#import?<CoreTelephony/CTCarrier.h>??#import?<CoreTelephony/CTTelephonyNetworkInfo.h>?? 創(chuàng)建對(duì)象
[objc]?view plaincopy
CCTelephonyNetworkInfo?*info?=?[[CTTelephonyNetworkInfo?alloc]?init];?? 獲取運(yùn)行商的名稱
[objc]?view plaincopy
CTCarrier?*carrier?=?[info?subscriberCellularProvider];??NSString?*mCarrier?=?[NSString?stringWithFormat:@"%@",[carrier?carrierName]];?? 獲取當(dāng)前網(wǎng)絡(luò)的類型
ios7之后可以按照以下方式獲取。方便而且類型多
[objc]?view plaincopy
NSString?*mConnectType?=?[[NSString?alloc]?initWithFormat:@"%@",info.currentRadioAccessTechnology];?? 類型有以下:
[objc]?view plaincopy
CTRadioAccessTechnologyGPRS?????????CTRadioAccessTechnologyEdge?????????CTRadioAccessTechnologyWCDMA???????????CTRadioAccessTechnologyHSDPA????????????CTRadioAccessTechnologyHSUPA????????????CTRadioAccessTechnologyCDMA1x???????CTRadioAccessTechnologyCDMAEVDORev0????CTRadioAccessTechnologyCDMAEVDORevA????CTRadioAccessTechnologyCDMAEVDORevB????CTRadioAccessTechnologyeHRPD????????CTRadioAccessTechnologyLTE?????????? ios7之前的話apple給我們提供了Reachability來獲取。
首先要導(dǎo)入SystemConfiguration.framework,把下載下來的Reachability.h和Reachability.m加進(jìn)項(xiàng)目中
[objc]?view plaincopy
Reachability?*reach?=?[Reachability?reachabilityWithHostName:@"www.apple.com"];??switch([reach?currentReachabilityStatus])??{??????case?NotReachable:??????????????????break;??????case?ReachableViaWiFi:??????????????????break;??????case?ReachableViaWWAN:??????????????????break;??????default:????<span?style="white-space:pre">????</span>????????????????break;??}?? http://blog.csdn.net/qijianli/article/details/19922653?這個(gè)博客還說了其它的方法,不過因?yàn)槭钦{(diào)用私有API,所以沒有采用。
6、獲取當(dāng)前信號(hào)的強(qiáng)弱這個(gè)貌似沒有給出官方的api,但是網(wǎng)上有人說可以用私有的api實(shí)現(xiàn),但是通不過appStore的審核,方法如下:
利用linux下動(dòng)態(tài)庫顯式調(diào)用api的函數(shù)。先包含頭文件?#import <dlfcn.h>
[objc]?view plaincopy
(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、設(shè)備震動(dòng)
需要加入AudioToolbox framework,導(dǎo)入頭文件 #import <AudioToolbox/AudioToolbox.h>
在需要震動(dòng)的地方添加代碼:
[objc]?view plaincopy
AudioServicesPlaySystemSound?(?kSystemSoundID_Vibrate)?;?? 但是貌似這個(gè)不支持傳入震動(dòng)時(shí)間和模式,自己去控制吧。
8、獲取電池的相關(guān)信息
[objc]?view plaincopy
@implementation?BatterMonitor??-(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;???}???-(float)?getBatteryLevel?{????????return?[UIDevice?currentDevice].batteryLevel;??}?????-(void)?getBatteryInfo??{??????NSString?*state?=?getBatteryState();??????float?level?=?getBatteryLevel()*100.0;??????}????-(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中打開一個(gè)網(wǎng)頁這個(gè)比較簡(jiǎn)單,直接用提供的接口openURL即可。
[cpp]?view plaincopy
NSString?*url?=?@"www.apple.com"??[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:url]];?? 10、app中打開另一個(gè)app打開另一個(gè)app還是可以通過openURL來實(shí)現(xiàn)。但是要分兩種情況。第一種是啟動(dòng)內(nèi)置的應(yīng)用,一般的電話,瀏覽器,短信和
郵件可以直接調(diào)用并添加參數(shù),譬如
[objc]?view plaincopy
[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"tel://10086"]];??[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"mailto://devprograms@apple.com"]];??[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"sms://10086"]];?? 第二種情況是要打開自己開發(fā)的app,這種情況則要為將要打開的app注冊(cè)一個(gè)URL協(xié)議。這個(gè)可以在項(xiàng)目的文件info.plist中注冊(cè)。主要操作為:?
Step1. 右鍵,選擇“Add Row”
Step2. Key值選擇“URL types”
Step3. 打開“Item 0″,然后為該key增加一個(gè)URL identifier。可以是任何值,但建議用“反域名”(例如 “com.fcplayer.testHello”)。
Step4. 在“Item 0”下再加一行。
Step5. 選擇“URL Schemes” 作為Key。
Step6. 輸入你的URL協(xié)議名 (例如“testHello://” 應(yīng)寫做“testHello”)。如果有必要,你可以在這里加入多個(gè)協(xié)議。
其實(shí)在打開的時(shí)候只需要URL Schemes即可,URL identifier是可選項(xiàng)。如果需要傳送參數(shù),可以在URL Schemes://添加你的參數(shù),格式和網(wǎng)頁開發(fā)的傳遞參數(shù)差不多。(又或者URL Schemes://URL identifier@添加的參數(shù))關(guān)鍵是要和接收參數(shù)方定義好處理的方式。然后在需要打開的地方添加代碼:
[objc]?view plaincopy
NSString?*url?=?@"URL?Schemes的路徑"??[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:url]];?? (
如有錯(cuò)誤,請(qǐng)不吝指正,謝謝)
總結(jié)
以上是生活随笔為你收集整理的ios获取设备信息总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。