如何阻止我的应用程序请求访问照片的权限?

时间:2013-04-05 21:03:21

标签: ios objective-c permissions camera avfoundation

我正在创建一个录制视频的应用。我将视频保存到应用程序的沙箱中,因此我无需访问用户照片库。我不希望我的应用程序永远请求许可。但是,在应用程序打开的大约50%的时间内,它会要求获得访问照片的权限。

我对原因的最好猜测:我正在使用一个库,它可以更容易地使用AV Foundation,并且它的一些功能隐藏在触发权限对话框的代码中。

确保对话框永不显示的最佳方法是什么?我可以通过在应用程序的plist中的某处设置一个公司NO来覆盖它吗?我是否必须通过库的代码来查找违规功能?如果是这样,找出罪魁祸首的最佳方法是什么?什么最有可能触发对话?

我正在使用的库:

DIYAV:https://github.com/diy/av

DIYCam:https://github.com/thisandagain/cam

我正在触发这样的录音:

// self.cam is a DIYCam instance
[self.cam startSession];
[self.cam captureVideoStart];

并停止录音:

[self.cam captureVideoStop];
[self.cam stopSession];

2 个答案:

答案 0 :(得分:0)

如果您要搜索框架并且有代码,则应搜索UIImagePickerControllerSourceTypePhotoLibraryUIImagePickerControllerSourceTypeSavedPhotosAlbum

这些是访问iPhone照片库的那些。

答案 1 :(得分:0)

将“DIYAVSettingSaveLibrary”设置为false似乎解决了它。 (默认设置为true。)

NSDictionary *options;
options          = @{ DIYAVSettingFlash              : @false,
                      DIYAVSettingOrientationForce   : @false,
                      DIYAVSettingOrientationDefault : [NSNumber numberWithInt:AVCaptureVideoOrientationLandscapeRight],
                      DIYAVSettingCameraPosition     : [NSNumber numberWithInt:AVCaptureDevicePositionBack],
                      DIYAVSettingCameraHighISO      : @true,
                      DIYAVSettingPhotoPreset        : AVCaptureSessionPresetPhoto,
                      DIYAVSettingPhotoGravity       : AVLayerVideoGravityResizeAspectFill,
                      DIYAVSettingVideoPreset        : AVCaptureSessionPreset1280x720,
                      DIYAVSettingVideoGravity       : AVLayerVideoGravityResizeAspectFill,
                      DIYAVSettingVideoMaxDuration   : @300,
                      DIYAVSettingVideoFPS           : @30,
                      DIYAVSettingSaveLibrary        : @false };

[cam setupWithOptions:options]; // Check DIYAV.h for options
[cam setCamMode:DIYAVModeVideo];