Cancelar a notificação de faixa no iOS8 não está funcionando

Meu título pode não representar com precisão a minha pergunta, então peço desculpas. Procurei uma solução para criar esse nível de funcionalidade, mas não consigo encontrá-lo.

Estou criando um aplicativo de VoIP para iOS 8. Quando um usuário recebe uma chamada, estou exibindo uma notificação com um toque de 12 segundos. Enquanto esta notificação estiver em andamento se a chamada for desconectada, desejo que a notificação de Chamada recebida desapareça e exiba uma notificação de Chamada perdida imediatamente. Esse nível de funcionalidade é possível porque o Viber faz isso.

Atualmente, estou enviando uma notificação por push silenciosa quando uma chamada de entrada está disponível. Esta é a minha carga ...

aps = {
        "content-available" = 1;
      };
      category = INCOMING;
      from = "+15555554220";

Ao receber o envio silencioso, estou criando uma Notificação local como esta ...

if ([userInfo[@"category"] isEqualToString:@"INCOMING"]) {
                NSLog(@"application: didReceiveRemoteNotification:  fetchCompletionHandler: Incoming Call Notification Received");

                NSLog(@"application: didReceiveRemoteNotification:  fetchCompletionHandler: Sending Local Notification For Incoming Call");

                // Get Caller Contact Info
                NSDictionary *contact = [self findContactInfoForNumber:userInfo[@"from"]];

                NSString *message = [NSString stringWithFormat:@"Incoming Call: %@",userInfo[@"from"]];

                if (contact != nil) {
                    message = [NSString stringWithFormat:@"Incoming Call: %@ %@",contact[@"firstName"],contact[@"lastName"]];
                }

                UILocalNotification *notification = [[UILocalNotification alloc] init];
                NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithObject:@"Incoming Call" forKey:@"type"];
                notification.userInfo = infoDict;
                notification.category = @"INCOMING_CALL_CATEGORY";
                notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
                notification.alertBody = message;
                notification.timeZone = [NSTimeZone defaultTimeZone];
                notification.soundName = @"ring.m4a";

                [[UIApplication sharedApplication] scheduleLocalNotification:notification];

            }

Depois que a ligação for desconectada, estou enviando outra notificação por push silenciosa para uma ligação perdida ...

aps = {
        "content-available" = 1;
      };
      category = MISSED;

Uma vez recebido, estou cancelando todas as notificações locais como esta ...

if ([userInfo[@"category"] isEqualToString:@"MISSED"]) {
     NSLog(@"application: didReceiveRemoteNotification:  fetchCompletionHandler: Missed Call Notification Received");
     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
     [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

O problema que encontro é que, na tela de bloqueio, ele se comporta exatamente do jeito que eu quero. Eu recebo a notificação de chamada recebida e, quando o chamador desliga, a notificação desaparece imediatamente da central de notificações e uma notificação de chamada perdida existe no local. No entanto, quando o telefone estiver na tela inicial. Um banner é exibido e, em seguida, ele toca o toque inteiro e exibe a chamada perdida. Alguém sabe o motivo pelo qual isso está acontecendo? Alguém tem alguma solução para atingir esse nível de funcionalidade? Como eu disse antes, o aplicativo Vider é um excelente exemplo do que eu quero que meu aplicativo faça.

Desde já agradeço.

questionAnswers(0)

yourAnswerToTheQuestion