iPhone开发技巧之私有API — 设备相关信息

来源:互联网 发布:阿里的数据平台 编辑:程序博客网 时间:2024/06/05 19:06

使用这些API是要冒一些风险的,一是不会通过 App Stroe 的审核,二是以后比一定还能在高版本的SDK中使用。所以使用之前,三思而行。

先总结一些与设备相关的API。

IMEI

可以在这里下载NetworkController.h, 或者使用你自己dump的版本。使用如下:

12345678
<span class="preprocessor" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); background-color: transparent;">#import</span> <span class="string" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(255, 160, 122); background-color: transparent;">"NetworkController.h"</span><span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">获得IMEI</span><span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">需要 Message.framework</span>+ (<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>*) <span class="function-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); background-color: transparent;">getDeviceIMEI</span> {    <span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NetworkController</span> *<span class="variable-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); font-weight: bold; background-color: transparent;">ntc</span> = [<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NetworkController</span> sharedInstance];    <span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">return</span> [ntc IMEI];}

IMSI

1234567
<span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">需要 CoreTelephony framework</span><span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">在文件开头加入</span><span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">extern</span> <span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>* <span class="function-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); background-color: transparent;">CTSIMSupportCopyMobileSubscriberIdentity</span>();+ (<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>*) <span class="function-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); background-color: transparent;">getDeviceIMSI</span> {    <span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">return</span> CTSIMSupportCopyMobileSubscriberIdentity();}

本机电话号码

1234567
<span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">需要 CoreTelephony framework</span><span class="comment-delimiter" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">// </span><span class="comment" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(173, 216, 230); background-color: transparent;">在文件开头加入</span><span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">extern</span> <span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>* <span class="function-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); background-color: transparent;">CTSettingCopyMyPhoneNumber</span>();+ (<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>*) <span class="function-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); background-color: transparent;">getPhoneCodeByCT</span> {    <span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">return</span> CTSettingCopyMyPhoneNumber();}

动态加载Framework

除了使用Xcode将Framework加入工程,你也可以使用下面的方法,在程序中动态加载,比如取得IMEI的例子:

1234567
<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span>* <span class="variable-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); font-weight: bold; background-color: transparent;">sdk_path</span> = @<span class="string" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(255, 160, 122); background-color: transparent;">"/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${IPHONE_SDK}.sdk/System/Library/PrivateFrameworks"</span>;<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSBundle</span> *<span class="variable-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); font-weight: bold; background-color: transparent;">b</span> = [<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSBundle</span> bundleWithPath:[<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NSString</span> stringWithFormat:@<span class="string" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(255, 160, 122); background-color: transparent;">"%@/Message.framework"</span>, sdk_path]];<span class="keyword" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(250, 128, 114); font-weight: bold; background-color: transparent;">if</span> ([b load]) {    <span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">Class</span> <span class="variable-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); font-weight: bold; background-color: transparent;">NetworkController</span> = NSClassFromString(@<span class="string" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(255, 160, 122); background-color: transparent;">"NetworkController"</span>);    <span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">id</span> <span class="variable-name" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(127, 255, 212); font-weight: bold; background-color: transparent;">nc</span> = [<span class="type" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(154, 205, 50); font-weight: bold; background-color: transparent;">NetworkController</span> sharedInstance];    NSLog(@<span class="string" style="border: 0px; outline: 0px; vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(255, 160, 122); background-color: transparent;">"-- IMEI: %@"</span>, [nc IMEI]);}

0 0
原创粉丝点击