Приложение iOS работает в фоновом режиме

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

Я прочитал и обнаружил, что Apple не позволяет приложениям оставаться в фоновом режиме дольше 10 минут, но я провел некоторое тестирование и обнаружил, что другие живые приложения, похожие на мое, работают дольше 10 минут. Я также нашел старые сообщения, которые обходят это, устанавливая и сбрасывая таймеры до отметки 10 минут, работает ли это с iOS7 и принимает ли Apple это?


person user2551731    schedule 08.10.2013    source источник


Ответы (1)


Изменить: неправильно понял вопросы. Вот возможная альтернатива.

- (void)applicationDidEnterBackground:(UIApplication *)application{
      UIApplication*    app = [UIApplication sharedApplication];
      task = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:task];
        task = UIBackgroundTaskInvalid;
    }];
    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Do the work associated with the task.
        NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]);
        // save time to NSUserdefaults
        [[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"startDate"];

        [app endBackgroundTask:task];
        task = UIBackgroundTaskInvalid;
    });

}

- (void)applicationWillTerminate:(UIApplication *)application{
    [[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"terminateDate"];
}

-(void)applicationDidFinishLaunching:(UIApplication)application{
   //get start time & terminate time & then take a diffrence
   NSDate* temporaryDate1 = (NSDate*)[userDefaults objectForKey:@"startDate"];
   NSDate* temporaryDate2 = (NSDate*)[userDefaults objectForKey:@"terminateDate"];
   compare[temporaryDate1,temporaryDate2];
}

Вот ссылка, чтобы проверить, как сравнивать NSDate пример.

person Kunal Balani    schedule 08.10.2013
comment
Он хочет иметь возможность устанавливать время работы приложения в фоновом режиме, а не проверять, как долго оно находится в фоновом режиме. - person JonahGabriel; 08.10.2013
comment
Выглядит хорошо, но предотвращает ли это закрытие приложения после 10 минут работы в фоновом режиме? Или такого больше не бывает? - person user2551731; 08.10.2013
comment
Нет, это только скажет вам, солгала ли вам Apple или нет !! - person Kunal Balani; 08.10.2013