Cancelar notificación de banner en iOS8 no funciona

Es posible que mi título no represente con precisión mi pregunta, por lo que me disculpo. He buscado una solución para crear este nivel de funcionalidad, pero no puedo encontrarla.

Estoy creando una aplicación VoIP para iOS 8. Cuando un usuario recibe una llamada, estoy mostrando una notificación con un tono de llamada de 12 segundos. Mientras esta notificación está en progreso si la llamada se desconecta, quiero que la notificación de llamada entrante desaparezca y muestre una notificación de llamada perdida de inmediato. Este nivel de funcionalidad es posible porque Viber lo hace.

Actualmente, estoy enviando una notificación automática silenciosa cuando hay una llamada entrante disponible. Esta es mi carga útil ...

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

Al recibir el impulso silencioso, estoy creando una Notificación 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];

            }

Luego, una vez que se desconecta la llamada, envío otra notificación push silenciosa por una llamada perdida ...

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

Una vez recibido, estoy cancelando todas las notificaciones locales como esta ...

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

El problema que encuentro es que en la pantalla de bloqueo se comporta exactamente como yo quiero. Recibo la notificación de llamada entrante y cuando la persona que llama cuelga, esa notificación desaparece inmediatamente del centro de notificaciones y hay una notificación de llamada perdida en su lugar. Sin embargo, cuando el teléfono está en la pantalla de inicio. Se muestra un banner y luego reproduce el tono de llamada completo y luego muestra la llamada perdida. ¿Alguien sabe la razón por la que esto está sucediendo? ¿Alguien tiene alguna solución para lograr este nivel de funcionalidad? Como dije antes, la aplicación Vider es un excelente ejemplo de lo que quiero que haga mi aplicación.

Gracias de antemano.