CallStateDisconnected wykryto tylko dla połączeń przychodzących, a nie dla połączeń wykonywanych z mojej aplikacji

Nie mogę wykryć końca połączenia (stan CallStateDisconnected), jeśli wykonam połączenie z mojej aplikacji. Ale jeśli otrzymam połączenie, gdy moja aplikacja jest aktywna, mogę wykryć ten stan. Otrzymuję także stan CTCallStateDialing dwa lub trzy razy, gdy połączenie zaczyna się od mojej aplikacji. Kiedyś działało w systemie iOS5, problemy te występowały w systemie iOS6.

Moja aplikacja del kod;

 self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall* call) {

    // anounce that we've had a state change in our call center
    NSDictionary *dict = [NSDictionary dictionaryWithObject:call.callState forKey:@"callState"]; //BREAKPOINT HERE

    [[NSNotificationCenter defaultCenter] postNotificationName:@"CTCallStateDidChange" object:self userInfo:dict]; 

};

Dziwne jest to, że wszystko działa, jeśli wstawię breakpoint w bloku callEventHandler i wznowię wykonywanie po zakończeniu połączenia, wtedy otrzymam CallStateDisconnected poprawnie.

Następnie subskrybuję powiadomienia w moim kontrolerze widoku i wykonuję ten kod, gdy je otrzymuję:

- (void)ctCallStateDidChange1:(NSNotification *)notification
 {
  NSString *call = [[notification userInfo] objectForKey:@"callState"];


if ([call isEqualToString:CTCallStateDisconnected])
{
    NSLog(@"Call has been disconnected");

}
else if([call isEqualToString:CTCallStateDialing])
{

    NSLog(@"Call start");
}
else if ([call isEqualToString:CTCallStateConnected])
{
    NSLog(@"Call has just been connected");
}
else if([call isEqualToString:CTCallStateIncoming])
{
    NSLog(@"Call is incoming");
}
else
{
    NSLog(@"None");
}

}

Wykonuję połączenie z mojej aplikacji w ten sposób:

        UIWebView *callWebview = [[UIWebView alloc] init];
        [self.view addSubview:callWebview];
        NSURL *telURL = [NSURL URLWithString:number];
        [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];

Zalogowałem również stan aplikacji i otrzymałem- (void)applicationDidBecomeActive:(UIApplication *)application

po tym, jak zacznę dzwonić, idę do- (void)applicationDidEnterBackground:(UIApplication *)application

i po zakończeniu połączenia z powrotem- (void)applicationDidBecomeActive:(UIApplication *)application.

Czy to dziwne?DidBecomeActive jest wywoływany po wykonaniu połączenia i przed przejściem do tła?

questionAnswers(1)

yourAnswerToTheQuestion