UILocalNotification не запрашивает после 10 минут в фоновом режиме

ВdidFinishLaunchingWithOptions цикл таймера, вызывающий функциюhttpRequest каждый 1-минутный интервал.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //rest of code

    NSTimer *notifyTimer = [NSTimer timerWithTimeInterval:60 target:self selector:@selector(httpRequest) userInfo:nil repeats:YES];//7200.0
    [[NSRunLoop mainRunLoop] addTimer:notifyTimer forMode:NSDefaultRunLoopMode];

    return YES;
}

После нажатия кнопки «Домой» приложение переходит в фоновый режим и вызывает функциюapplicationDidEnterBackground поэтому начинается фоновая задача.

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

}

ОтhttpRequest функция, которую я получаюY с веб-сервера после каждого 1-минутного интервала, так чтоUILocalNotification срабатывает после каждой секунды.

-(NSString *)httpRequest {

    NSURL *url = [NSURL URLWithString:@"http://192.168.10.67/t.php"];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    NSString *userAgent = [NSString stringWithFormat:@"bgTaskTest-IOS"];
    [request setValue:userAgent forHTTPHeaderField:@"User-Agent"];

    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];

    [request setHTTPMethod:@"GET"];

    [request setTimeoutInterval:25];

    NSURLResponse *response;

    NSData *dataReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

    NSString *stringReply = [[NSString alloc] initWithData:dataReply encoding:NSASCIIStringEncoding];

    if ([stringReply isEqualToString:@"Y"]) {
        [self showLocalNotification:nil]; //calling UILocalNotification
    } else {
        NSLog(@"%@",stringReply);
    }

    return stringReply;
}

функцияshowLocalNotification звонит через каждые 1 минуту на основе ответаhttpRequest функция.

-(void)showLocalNotification {

    NSString *msg = @"test message";

    [[UIApplication sharedApplication] cancelAllLocalNotifications];

    UILocalNotification *_localNotification = [[UILocalNotification alloc]init];

    _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];

    _localNotification.timeZone = [NSTimeZone defaultTimeZone];

    _localNotification.alertBody = msg;

    _localNotification.soundName = UILocalNotificationDefaultSoundName;

    _localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber]+1;

    [[UIApplication sharedApplication] scheduleLocalNotification:_localNotification];
    //[[UIApplication sharedApplication] presentLocalNotificationNow:_localNotification];

}

Все правильно, уведомление выводится через каждые 1 минуту, когда приложение находится в фоновом режиме.

Но моя проблема - Фоновая задачаВремя жизни составляет 10 минут, поэтому через 10 минут уведомления не появляются. По этой причине я снова запускаю фоновое задание вbeginBackgroundTaskWithExpirationHandler но мое приложение убить в это время перезапуска фоновой задачи.

Я не могВозможность использовать уведомление более 10 минут, когда приложение находится в фоновом режиме.

Пожалуйста, кто-нибудь, помогите мне.

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

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