Фонарик iPhone не работает, когда приложение находится в фоновом режиме

Здравствуйте, я использую приложение на основе местоположения и хочу использовать фонарик камеры iphone в фоновом режиме. К сожалению, фонарик работает только на переднем плане, он автоматически отключает вспышку в фоновом режиме, даже если код выполняется.

Код, который я использовал, работает только на переднем плане

#import <AVFoundation/AVFoundation.h>
//flashcode
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch] && [device hasFlash]){

        [device lockForConfiguration:nil];
        if (device.torchMode == AVCaptureTorchModeOff)
        {
            [device setTorchMode:AVCaptureTorchModeOn];
            [device setFlashMode:AVCaptureFlashModeOn];
            //torchIsOn = YES;
        }
        else
        {
            [device setTorchMode:AVCaptureTorchModeOff];
            [device setFlashMode:AVCaptureFlashModeOff];
            // torchIsOn = NO;
        }
        [device unlockForConfiguration];
    }
}

person Suraj K Thomas    schedule 21.08.2015    source источник
comment
Было бы хорошо, если бы кто-нибудь объяснил, как песочница Apple убивает фонарик, когда приложение находится в фоновом режиме.   -  person Suraj K Thomas    schedule 25.08.2015
comment
Я отредактировал свой ответ, чтобы объяснить немного больше.   -  person Quentin Hayot    schedule 26.08.2015


Ответы (1)


Это нормальное поведение.
Песочница Apple не позволит вам оставить вспышку включенной, пока ваше приложение работает в фоновом режиме.
Обходного решения нет, если только мы не говорим о взломанном приложении. .

Изменить:
Apple очень строго относится к использованию системных API. Особенно, когда речь идет о:
– Конфиденциальности пользователей
– Сроке службы батареи
– Удобстве пользователя.

В случае с фонариком актуальны два последних пункта. Apple не позволит приложению разряжать аккумулятор, когда оно не находится на переднем плане, а пользователи iOS привыкли к тому, что фонарик, камера, микрофон... сразу отключаются при переходе на задний план (за исключением микрофона в некоторых фоновых режимах). случаи).

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

person Quentin Hayot    schedule 21.08.2015