Iphone 应用程序处于后台时手电筒不工作

Iphone flashlight not working while app is in background

您好,我正在使用基于位置的应用程序,想使用 iphone 相机手电筒,而 background.Unfortunately 手电筒仅在前景工作,它会自动关闭闪光灯背景即使代码正在执行。

我使用的代码只能在前台工作

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

这是正常现象。
Apple 的沙盒不允许您在应用程序处于后台时保持闪光灯开启。
除非我们谈论的是越狱应用程序,否则没有解决方法。

编辑:
Apple 对其系统 API 的使用非常严格。特别是涉及到:
- 用户隐私
- 电池寿命
- 用户体验

就手电筒而言,最后两项是相关的。 Apple 不会让应用程序在不在前台时耗尽电池电量,并且 iOS 用户已经习惯了手电筒、相机、麦克风......在进入后台时会立即禁用(麦克风除外)在某些背景模式情况下)。

要回答对您初始 post 的评论,iOS 控制您的硬件。因此,由于 Apple 决定他们不希望在用户关闭应用程序时灯一直亮着,因此 iOS 只会在您的应用程序进入后台时关闭闪光灯。您的应用无权阻止它。