简体   繁体   中英

Why my iOS app does not ask user permission to access camera?

I develop iOS app and it uses camera. AVCaptureDeviceInput is used to interface to camera. I checked Authorisation status as

- (void)checkDeviceAuthorizationStatus
{
    NSString *mediaType = AVMediaTypeVideo;

    [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
        if (granted)
        {
            //Granted access to mediaType
            [self setDeviceAuthorized:YES];
        }
        else
        {
            //Not granted access to mediaType
            dispatch_async(dispatch_get_main_queue(), ^{
                [[[UIAlertView alloc] initWithTitle:@"AVCam!"
                                            message:@"AVCam doesn't have permission to use Camera, please change privacy settings"
                                           delegate:self
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil] show];
                [self setDeviceAuthorized:NO];
            });
        }
    }];
}

When I launch the application, why it does not ask user permission for access to the camera? So the app does not appear in settings/privacy/camera to manually allow to access camera. Then show this error "AVCam doesn't have permission to use Camera, please change privacy settings" and app can't use the camera.

EDIT: That means the app is not allowed to access the camera without asking user permission. Not only camera, camera-roll also has the same problem.

All these things happened after I reset settings in Settings/Reset/Rest All Settings. Before that the app was working well.

The problem is solved now. I need to trace back step by step and took me long time to solve the problem. Some people suggested to include NSCamerausageDescription Key. Actually it is necessary for devices with iOS 7 and above. I included the Key but still user permission is not asked yet. Finally I found the problem at Info.plist. There are some extra lines and I deleted three lines. Not sure how they are related to my problem. Those I deleted are

(1)Get info string

(2)Bundle display name

(3)Application Category

After deleting these three lines in the info.plist. Then the app asks the user permission. The point is that you may need to check your Info.plist for such problem.

您需要将您的应用程序名称放在 info.plist 的“Bundle display name”中

Well looking at above contradictory solutions - to remove and to add bundle display name - makes me think of the cause of this bug. I guess this (Apple) bug appears only on devices that had the same app installed at the time it didn't have camera permissions (older versions without camera functions or just bad testflight versions). So if you just delete and install from scratch the bugged app permissions will become okay. Speaking of workaround without uninstalling the existing app, if you change the bundle description (delete or add) in plist then iOS will use the new plist with permissions over already installed as we expect it should.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM