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

1 ответов


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

изменить:
Apple очень строго относится к использованию API системы. Особенно когда дело доходит до:
- Конфиденциальность пользователя
- Время автономной работы
- Пользовательский опыт

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

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