2017-01-25 21 views
5

Я работаю над audio/video call и пытаюсь получить входящий звонок notification цикл за 1 минуту. Что показывает в iOS, когда приложение является фоном, Notification banner скрыть и показать рингтон на 1 минуту.iOS 10: Как показать входящее уведомление о вызове VOIP, когда приложение находится в фоновом режиме?

Я попробовал этот код я запускающий только единственный раз:

UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init]; 
    content.title = [NSString stringWithFormat:@"Video Call from %@",userId]; 
    content.body = @""; 
    content.userInfo = [userInfo mutableCopy]; 
    content.sound = [UNNotificationSound soundNamed:@""]; 

    NSDate *now = [NSDate date]; 
    now = [now dateByAddingTimeInterval:3]; 
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
    [calendar setTimeZone:[NSTimeZone localTimeZone]]; 

    NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:now]; 

    UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:NO]; 
    UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"INCOMING_VOIP_APN" content:content trigger:trigger]; 

    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
    center.delegate = self; 
    [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { 
     if (!error) { 
      NSLog(@"PUSHKIT : INCOMING_VOIP_APN"); 
     } 
    }]; 

Как я могу достичь же, пожалуйста, помогите?

Я использую UserNotifications.framework (iOS 10) и PushKit.

Спасибо!

+0

@Jayprakash Dubey: Вы можете помочь в этом вопросе? –

+0

Вы хотите получить уведомление здесь для непрерывного 1 мин или с интервалом 1 мин? – gurmandeep

+0

Я хочу, чтобы уведомление показывалось в течение 3 секунд и скрыть, и этот процесс должен выполняться только в течение 1 минуты, точно так же, как входящий вызов whatsapp, когда приложение находится в фоновом режиме в ios –

ответ

3

Я бы предположил, что местное уведомление доступно только для определенного времени. Вам нужно установить локальное уведомление или уведомление во время разговора. Когда срабатывает уведомление, в методе делегирования уведомления вам нужно будет создать пользовательскую логику с помощью NSTimer.

Создайте вид, похожий на push-уведомление/представление, которое вы хотите отобразить для вызова. Добавьте его в окно приложения, чтобы оно отображалось поверх всех видов. Через 3 секунды удалите это представление, и в логике вы можете показать один и тот же вид в течение 1 мин.

Дайте мне знать, если это поможет.

+1

да, это сделало мой 30% этого вопроса thanxx alot –

+0

Хороший ответ .... – Hasya

+0

С помощью справки backgroundExecution With Expiration обработчик сделал 95% того, что мне точно нужно, поскольку я могу делать только 30 сек. :) –

3

iOS 10 CallKit намного лучше, без уведомления, но пользовательский интерфейс с системным вызовом, как и обычный вызов. В Github есть несколько примеров кода, которые легче читать, чем образец Apple Speakerbox.

+0

, пожалуйста, помогите мне по этой проблеме: http: // stackoverflow.com/questions/42266258/ios-9-beginbackgroundtaskwithexpirationhandler-is-getting-called-before-timout/42274565?noredirect1_comment71732371_42274565 –

+0

Пожалуйста, проверьте, работает ли мое предложение для вас. – Qiulang

+0

Я имел в виду свой ответ на другой вопрос. Не этот :) – Qiulang

 Смежные вопросы

  • Нет связанных вопросов^_^