我希望能够有选择地阻止我正在编写的iOS应用程序中的传入呼叫。这是供个人使用的,而不是App Store,所以我可以使用私有API来实现这一目标。
我最近遇到了核心电话框架。有没有办法使用这个框架来阻止调用?如果没有,我可以使用哪些私有API来执行此操作?
答案 0 :(得分:36)
你确定不是吗? http://tech.ruimaninfo.com/?p=83上的代码示例演示了如何执行此类操作。 SDK中的核心电话标头不完整。 当然这意味着没有应用程序商店 这是基于我链接的示例的代码片段
if ([str1 isEqualToString:@"kCTCallIdentificationChangeNotification"])
{
NSDictionary *info = (__bridge NSDictionary *)userInfo;
CTCall2 *call = (__bridge CTCall *)[info objectForKey:@"kCTCall"];
NSString *caller = CTCallCopyAddress(NULL, call);
NSLog(@"Caller %@",caller);
if ([caller isEqualToString:@"+1555665753"])
{
//disconnect this call
CTCallDisconnect(call);
}
需要其他定义:
typedef struct __CTCall CTCall;
extern NSString *CTCallCopyAddress(void*, CTCall *);
extern void CTCallDisconnect(CTCall*);
你需要监控电话中心的回调(参见链接示例) 我在iOS5设备上测试了这个片段
答案 1 :(得分:3)
核心电话不支持此功能。据我所知,任何已知的私有API都无法做到这一点。
答案 2 :(得分:0)
从iOS 10.0+开始,有一个CallKit,其中包含一个呼叫阻止和识别API:https://developer.apple.com/documentation/callkit
(在2020年或以后发现此信息的人的信息)