我想获取电话的状态,无论是已拨、已连接还是已断开......
我尝试了自己,但无法获得状态。
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:@"9723539389"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
CTCallCenter *callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call)
{
if(CTCallStateDialing)
{
NSLog(@"Dialing");
}
if(CTCallStateConnected)
{
NSLog(@"Connected");
}
if(CTCallStateDisconnected)
{
NSLog(@"Disconnected");
}
};
但问题是 CTCallCenter 块从未调用过...我目前在 iOS 7 中工作
您应该检查 CTCall 的 callState 属性才能捕获它
使用蜂窝呼叫的 CTCall 对象获取呼叫的标识符并确定呼叫的状态。
extern NSString const *CTCallStateDialing;
extern NSString const *CTCallStateIncoming;
extern NSString const *CTCallStateConnected;
extern NSString const *CTCallStateDisconnected;
是字符串常量。你的 for 循环没有意义。
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:@"9723539389"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
self.callCenter = [[CTCallCenter alloc] init];
[callCenter setCallEventHandler:^(CTCall* call)
{
if ([call.callState isEqualToString: CTCallStateConnected])
{
NSLog(@"Connected");
}
else if ([call.callState isEqualToString: CTCallStateDialing])
{
NSLog(@"Dialing");
}
else if ([call.callState isEqualToString: CTCallStateDisconnected])
{
NSLog(@"Disconnected");
} else if ([call.callState isEqualToString: CTCallStateIncoming])
{
NSLog(@"Incoming");
}
}];
NOTE:
@property(nonatomic, strong) CTCallCenter *callCenter;
应该在 Appdelegate 中声明并保留它。否则,它将被视为局部变量并在退出循环后立即释放
UPDATES:
回答“callCenter在appdelegate中声明,我如何将它与self一起使用?以及当[]添加到该块时的其他内容,然后它显示错误等于“预期']'””
将 self.callCenter 替换为这些行
YourApplicationDelegateClass *appDel =(YourApplicationDelegateClass*)[UIApplication sharedApplication].delegate;
appDel.callCenter = [[CTCallCenter alloc] init];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)