IOS私有API的了解

IOS的API分为四种:

PublishedAPI(公开的API)(或者Documented API

还有两类:私有APIPrivateAPI和未公开APIUnPublished API(或者UndocumentedAPI)

私有API是指放在PrivateFrameworks框架中的API,未公开的API是指虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等记录的API

按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。而私有API是苹果明确不能使用的API。虽然两者有所区别,但是在具体使用方法上是类似的。

私有API会面临审核通不过然后不能上线,但是也有使用私有API通过审核的比如谷歌的“GoogleVoice”,所以具体审核的详情不得而知。

<wbr></wbr>

示例一:

使用私有API——CoreTelephony获取本机号码

步骤如下:
1)导入CoreTelephony这个private framework
2)在xxx.m中加入红字部分:

#import "xxx.h"

extern NSString*CTSettingCopyMyPhoneNumb<wbr>er();<br></wbr>

@implementation
+(NSString *)myNumber{
return CTSettingCopyMyPhoneNumb<wbr>er();<br> }</wbr>

@end

3)在其它地方调用NSLog(@"myNumber=%@",[xxxmyNumber]);即是本机号码

另外机子的唯一标识码等一些信息可以用[UIDevice currentDevice]的uniqueIdentifier,name等属性来获取

<wbr></wbr>

其他资料:

callblocking on iPhone4

//using private API
//CoreTelephony framework is needed

extern NSString* const kCTSMSMessageReceivedNot<wbr>ification;<br> extern NSString* constkCTSMSMessageReplaceRece<wbr>ivedNotification;<br> extern NSString* const kCTSIMSupportSIMStatusNo<wbr>tInserted;<br> extern NSString* const kCTSIMSupportSIMStatusRe<wbr>ady;</wbr></wbr></wbr></wbr>

typedef struct __CTCall CTCall;
extern NSString *CTCallCopyAddress(void*, CTCall *);

void* CTSMSMessageSend(id server,id msg);
typedef struct __CTSMSMessage CTSMSMessage;
NSString *CTSMSMessageCopyAddress(void *, CTSMSMessage *);
NSString *CTSMSMessageCopyText(void *, CTSMSMessage *);

int CTSMSMessageGetRecordIde<wbr>ntifier(void * msg);<br> NSString * CTSIMSupportGetSIMStatus<wbr>();<br> NSString * CTSIMSupportCopyMobileSu<wbr>bscriberIdentity();</wbr></wbr></wbr>

id CTSMSMessageCreate(void* unknow,NSString* number,NSString*text);
void * CTSMSMessageCreateReply(void* unknow,void *forwardTo,NSString* text);

id CTTelephonyCenterGetDefa<wbr>ult(void);<br> voidCTTelephonyCenterAddObse<wbr>rver(id,id,CFNotificationCallback,NSString*,void*,int);<br> void CTTelephonyCenterRemoveO<wbr>bserver(id,id,NSString*,void*);<br> int CTSMSMessageGetUnreadCou<wbr>nt(void);</wbr></wbr></wbr></wbr>

static void callback(CFNotificationCenterRef center, void*observer, CFStringRef name, const void *object, CFDictionaryRefuserInfo)
{
NSString *notifyname=(NSString *)name;
if ([notifynameisEqualToString:@"kCTCallStatusChangeNotif<wbr>ication"])//phonecall<br> {<br> NSDictionary *info = (NSDictionary*)userInfo;</wbr>

NSString *state=[[info objectForKey:@"kCTCallStatus"]stringValue];
if ([state isEqualToString:@"5"])//disconnect
NSLog(@”unanswered:%@”,state);

}
else if ([notifynameisEqualToString:@"kCTCallIdentificationCha<wbr>ngeNotification"])<br> {<br> // CTCallCenter *center = [[CTCallCenter alloc] init];<br> // center.callEventHandler = ^(CTCall *call) {<br> // NSLog(@”call:%@”, [call description]);<br> // };</wbr>

NSDictionary *info = (NSDictionary *)userInfo;
CTCall *call = (CTCall *)[info objectForKey:@"kCTCall"];
NSString *caller = CTCallCopyAddress(NULL, call);
NSLog(@”电话号码:%@”,caller);
//CTCallDisconnect(call);

}
else if ([notifynameisEqualToString:@"kCTRegistrationDataStatu<wbr>sChangedNotification"])<br> {</wbr>

}
else if ([notifynameisEqualToString:@"kCTSMSMessageReceivedNot<wbr>ification"])<br> {//api expired<br> if ([[(NSDictionary *)userInfo allKeys]<br> containsObject:@”kCTSMSMessage”]) // SMS Message<br> {<br> CTSMSMessage *message = (CTSMSMessage *)<br> [(NSDictionary *)userInfo objectForKey:@"kCTSMSMessage"];<br> NSString *address = CTSMSMessageCopyAddress(NULL, message);<br> NSString *text = CTSMSMessageCopyText(NULL, message);<br> //NSArray *lines = [text componentsSeparatedByStr<wbr>ing:@"\n"];</wbr></wbr>

//printf(” %s %d\n”, [address cString], [lines count]);
//printf(” %s\n”, [text cString]);
fflush(stdout);

}
}
else if ([notifynameisEqualToString:@"kCTMessageReceivedNotifi<wbr>cation"])//receivedSMS<br> {<br></wbr>

NSDictionary *info = (NSDictionary *)userInfo;
CFNumberRef msgID = (CFNumberRef)[infoobjectForKey:@"kCTMessageIdKey"];
int result;
CFNumberGetValue((CFNumberRef)msgID, kCFNumberSInt32Type,&result);


}
else if ([notifynameisEqualToString:@"kCTIndicatorsSignalStren<wbr>gthNotification"])//signal<br> {<br></wbr>

}
else if ([notifynameisEqualToString:@"kCTRegistrationStatusCha<wbr>ngedNotification"])//networkregistration status<br> {<br></wbr>

}
else if ([notifynameisEqualToString:@"kCTRegistrationDataStatu<wbr>sChangedNotification"])<br> {<br><br> }<br> else if ([notifynameisEqualToString:@"kCTRegistrationCellChang<wbr>edNotification"])<br> {<br><br> }<br> else if ([notifynameisEqualToString:@"kCTIndicatorRadioTransmi<wbr>tNotification"])<br> {<br><br> }<br> //int unread=CTSMSMessageGetUnreadCou<wbr>nt();<br> //if (unread&gt;0)<br> //NSLog(@”unread SMS:%d”,unread);</wbr></wbr></wbr></wbr>

NSLog(@”name:%@-detail:%@”,notifyname,userInfo);

}

static void signalHandler(int sigraised)
{
printf(“\nInterrupted.\n”);
exit(0);
}

//—————–

id ct = CTTelephonyCenterGetDefa<wbr>ult();<br> CTTelephonyCenterAddObse<wbr>rver(ct, NULL, callback, NULL, NULL,CFNotificationSuspension<wbr>BehaviorHold);<br> // Handle Interrupts<br> sig_t oldHandler = signal(SIGINT, signalHandler);<br> if (oldHandler == SIG_ERR)<br> {<br> printf(“Could not establish new signal handler”);<br> exit(1);<br> }<br> // Run loop lets me catch notifications<br> printf(“Starting run loop and watching for notification.\n”);<br> //CFRunLoopRun();</wbr></wbr></wbr>

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值