UIlocalNotification pojawiło się teraz bez uruchamiania zadania w tle

Mam aplikację VoIP.

ja używamUILocalNotification w mojej aplikacji do powiadamiania o powiadomieniu o połączeniu przychodzącym, gdy aplikacja jest w tle.

Gdy aplikacja jest w tle, po otrzymaniu połączenia przychodzącego następuje wywołanie funkcji.

-(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];

}

Ta funkcja ustawia harmonogram Powiadomienie lokalne, aby wyświetlić alert za pomocą dwóch przyciskówCancel iReceive który strzela po sekundzie.

Teraz problemem jest:

To lokalne powiadomienie pojawia się użytkownikowi tylko wtedy, gdy zadanie w tle rozpoczęło się w następujący sposób

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

Ale po 10 minutach zadanie w tle zatrzymuje się. Następnie lokalne powiadomienie nie pojawia się użytkownikowi, mimo że jest uruchamiane (dziennik jest drukowany po wypaleniu)

Ja zmodyfikowałemapplicationDidEnterBackground działają jak poniżej, aby ponownie uruchomić zadanie w tle na długi czas. Ale nie mogę.

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

Teraz są pytania:

Czy jest jakiś sposób, aby wywołać lokalne powiadomienia i pojawić się użytkownikowi, gdy aplikacja jest w tle?

Jeśli zadanie w tle jest obowiązkowe, jak długo może trwać wyświetlanie lokalnego powiadomienia o pojawieniu się użytkownika po 10 minutach?

ja używamiPhone 3gs, iPhone 4 iiPhone 5.

questionAnswers(1)

yourAnswerToTheQuestion