iOS 5 – CTCallCenter不为我工作
我的手机:iOS 5.1.1使用Absynth2越狱
我正在尝试做什么: 检测来电或拨打电话的时间…
好吧,这里是我的代码,我放在AppDelegate
下didEnterBackground
,也didEnterBackground
尝试 – 我没有得到任何错误,但我也没有得到任何结果..
callCenter = [[CTCallCenter alloc] init]; [callCenter setCallEventHandler:^(CTCall *call) { NSDictionary *dict = [NSDictionary dictionaryWithObject:call.callState forKey:@"callState"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"CTCallStateDidChange" object:nil userInfo:dict]; NSLog(@"state changed on call: %@", call); [[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]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callDial:) name:CTCallStateDialing object:nil];
任何帮助表示赞赏。 谢谢!
问题是,iOS显然不会在后台向UIApplications传递通知。 从CTCallCenter的iOS文档 :
如果您的应用程序在呼叫事件发生时处于活动状态,系统会立即将事件分派给您的处理程序。 但是,通话事件也可能在您的应用程序被暂停时发生。 它被暂停时,您的应用程序不会收到通话事件。
既然你越狱,为什么不让你的“应用程序”成为一个启动守护进程呢? 然后,它可以作为服务一直运行。 如果你这样做,那么下面的代码应该得到你的通知(我在越狱iOS 5.0.1 iPhone 4上testing):
@property (nonatomic, strong) CTCallCenter* callCenter;
并通过以下方式注册通知:
- (void) registerForCalls { self.callCenter = [[CTCallCenter alloc] init]; NSLog(@"registering for call center events"); [callCenter setCallEventHandler: ^(CTCall* call) { if ([call.callState isEqualToString: CTCallStateConnected]) { } else if ([call.callState isEqualToString: CTCallStateDialing]) { } else if ([call.callState isEqualToString: CTCallStateDisconnected]) { } else if ([call.callState isEqualToString: CTCallStateIncoming]) { } NSLog(@"\n\n callEventHandler: %@ \n\n", call.callState); }]; }
这里有一个关于如何创build启动守护进程的很好的教程 ,如果你以前没有做过。
如果您的应用程序还具有graphics组件,则可以构build两个部分:始终运行的启动守护程序以及在用户启动时运行的UI应用程序。 如果需要的话,他们可以通知对方。
如果你想让你的应用程序始终在后台运行,那么你必须让你的应用程序的VoIP应用程序。 你也可以做一些小技巧,让你的应用程序在背景中播放无限的无声音乐。