我正在创建一个录制视频的应用。我将视频保存到应用程序的沙箱中,因此我无需访问用户照片库。我不希望我的应用程序永远请求许可。但是,在应用程序打开的大约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];
答案 0 :(得分:0)
如果您要搜索框架并且有代码,则应搜索UIImagePickerControllerSourceTypePhotoLibrary
或UIImagePickerControllerSourceTypeSavedPhotosAlbum
这些是访问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];