Принудительно закрыть приложение и запустить его в фоновом режиме - PullRequest
2 голосов
/ 19 января 2012

у нас есть приложение, которое имеет определенную цель, где требуется выход. После выхода процесс должен работать в фоновом режиме в течение определенного периода времени или до его завершения. Нам просто нужно знать, как программно заставить приложение перейти в фоновый режим, где процессы могут продолжаться. Любая помощь в этом была бы отличной! Заранее спасибо!

ОБНОВЛЕНИЕ: Мы подтвердили, что не существует программного способа заставить приложение выйти / войти в фоновый режим и продолжить выполнение фоновых задач. Вы можете принудительно закрыть приложение, используя exit (0); но это убивает приложение все вместе. Однако основная часть этого вопроса касалась выполнения задач в фоновом режиме. Мы нашли решение, которое позволяет нашему приложению начать обработку данных и выполнение задач, которые пользователь должен настроить для обработки. Вот код, необходимый. Это необходимо добавить к делегату приложения, а на устройстве / IOS требуется многозадачность.

- (void)applicationDidEnterBackground:(UIApplication *)app{
    // Check that IOS supports multitasking
    if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]){
        // Check that the device supports multitasking
        if ([[UIDevice currentDevice] isMultitaskingSupported]) {
        // Custom setting to allow users the freedom to enable or disable background tasks
        BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundTasksEnabled_key"];
            if ( enabled ){
                //Get the shared application instance
                backGroundApp = [UIApplication sharedApplication];  
                background_task = [backGroundApp beginBackgroundTaskWithExpirationHandler: ^ {
                    [backGroundApp endBackgroundTask: background_task];
                    background_task = UIBackgroundTaskInvalid;
                }];

                // Run in background
                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

                    NSLog(@"\n\nProcess background tasks!\n\n");

                    // Do your work here

                });
            }
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 18 апреля 2012

Вы можете перевести приложение iOS в фоновый режим, отправив зарегистрированный URL-адрес другому приложению, например URL-адресу веб-сайта, в Safari.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: myWebsiteURL ]];

Многие многие приложения, которые вызывают Safari для обработки URL-адресов, одобрены Apple.

Чтобы получить любое время в фоновом режиме, приложение должно быть соответствующим образом настроено с использованием одного из разрешенных фоновых изображенийрежимы (аудио, локация или VOIP);или приложение может запросить несколько минут дополнительного времени в фоновом режиме, а затем приостановить, вызвав метод beginBackgroundTaskWithExpirationHandler

0 голосов
/ 19 января 2012

Вы не можете заставить приложение в фоновом режиме, я вполне уверен, что руководящие принципы Apple запрещают вам делать это.Что может делать ваше приложение, если оно работает только в фоновом режиме, а не на переднем плане?

0 голосов
/ 19 января 2012

У вас не может быть процесса, выполняющегося (выполняющего работу) в фоновом режиме в iOS, вы получаете несколько секунд, когда приложение завершает какую-либо очистку, и все!

...