UIlocalNotification теперь отображается без запуска фоновой задачи

У меня есть приложение VoIP.

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

Когда приложение находится в фоновом режиме, после получения входящего вызова вызывается следующая функция.

-(void)showLocalNotification:(NSNotification *)notification {

    NSDictionary *dic = notification.userInfo;
    NSString *msg = [dic objectForKey:@"msg"];
    NSString *sound = [dic objectForKey:@"sound"];

    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    UILocalNotification *_localNotification = [[UILocalNotification alloc]init];

    //setting the fire dat of the local notification
    _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];

    //setting the time zone
    _localNotification.timeZone = [NSTimeZone defaultTimeZone];

    //setting the message to display
    _localNotification.alertBody = msg;

    //default notification sound
    if ([sound length]==0) {
        _localNotification.soundName = UILocalNotificationDefaultSoundName; 
    } else {
        _localNotification.alertAction = NSLocalizedString(@"Receive", nil);
        _localNotification.soundName = @"myringtone.aif";
    }
    //displaying the badge number
    _localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;

    //schedule a notification at its specified time with the help of the app delegate
    [[UIApplication sharedApplication]scheduleLocalNotification:_localNotification];

}

Эта функция устанавливает уведомление scheduleLocal для отображения предупреждения с двумя кнопкамиCancel а такжеReceive который срабатывает через секунду.

Теперь проблема заключается в:

Это локальное уведомление отображается для пользователя, только когда фоновая задача запущена следующим образом

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication* app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{        
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];
}

Но через 10 минут фоновое задание прекращается. Тогда локальное уведомление не появляется для пользователя, хотя оно срабатывает (журнал печатается после стрельбы)

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

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    expirationHandler = ^{
        [app endBackgroundTask:self.bgTask];
        self.bgTask = UIBackgroundTaskInvalid;
        self.bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
    }
   self.bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
}

Теперь вопросы:

Есть ли способ, который будет запускать локальные уведомления и отображаться пользователю, когда приложение находится в фоновом режиме?

Если фоновое задание является обязательным, как долго можно показывать локальное уведомление о появлении пользователя через 10 минут?

Я используюiPhone 3gs, iPhone 4 а такжеiPhone 5.

Ответы на вопрос(1)

Ваш ответ на вопрос