我需要我的应用程序在有电话时发送通知(来电,已连接,通话已结束)
我通过通知注册了我的viewController.
我通过通知注册了我的viewController.
[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(callReceived:) name:CTCallStateIncoming object:nil]; [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(callEnded:) name:CTCallStatedisconnected object:nil]; [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(callConnected:) name:CTCallStateConnected object:nil];
我还提出了一种检查呼叫状态的方法
-(IBAction)checkForCall:(id)sender{ NSLog(@"call state %@ id %@",call.callState,call.callID); CTCallCenter *callCenter = [[CTCallCenter alloc] init]; callCenter.callEventHandler = ^(CTCall* call){ if (call.callState == CTCallStatedisconnected) { NSLog(@"Call has been disconnected"); } else if (call.callState == CTCallStateConnected) { NSLog(@"Call has just been connected"); } else if(call.callState == CTCallStateIncoming) { NSLog(@"Call is incoming"); } else { NSLog(@"None of the conditions"); } }; }
但这一切都无效.请帮帮我.
哪里出错了?是否有任何代码告诉如何使用核心电话?
解决方法
用这个
Appdelegate.h
#import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> ... @property (nonatomic,strong) CTCallCenter* callCenter;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { .... self.callCenter = [[CTCallCenter alloc] init]; [self handleCall]; .... } -(void)handleCall { self.callCenter.callEventHandler = ^(CTCall *call){ if ([call.callState isEqualToString: CTCallStateConnected]) { //NSLog(@"call stopped"); } else if ([call.callState isEqualToString: CTCallStateDialing]) { } else if ([call.callState isEqualToString: CTCallStatedisconnected]) { //NSLog(@"call played"); } else if ([call.callState isEqualToString: CTCallStateIncoming]) { //NSLog(@"call stopped"); } }; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。