【问题标题】:How do I PREVENT my app from asking for permission to access photos?如何防止我的应用请求访问照片的权限?
【发布时间】:2013-03-28 10:25:24
【问题描述】:

我正在制作一个录制视频的应用程序。我将视频保存到应用程序的沙箱中,因此我无需访问用户照片库。我不希望我的应用程序请求许可。然而,大约 50% 的应用程序打开时,它会请求访问照片的权限。

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

确保对话框永远不会出现的最佳方法是什么?我可以通过在我的应用程序列表中的某处设置一个坚定的 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];

【问题讨论】:

  • 我敢打赌图书馆正在使用UIImagePickerController
  • @AlessandroVendruscolo 它是,但据我所知,它只能运行 isSourceTypeAvailable
  • @JoshCaswell 添加了库和链接,抱歉遗漏。另外,我将添加一些我正在使用的代码。
  • 是否有可能通过在构建和运行时替换应用程序的沙箱,将您的应用程序从权限链中删除?在得出权限对话框是这里的问题的结论之前,请尝试在不构建的情况下运行该东西。

标签: ios objective-c permissions camera avfoundation


【解决方案1】:

如果你想搜索框架并且你有代码,你应该搜索UIImagePickerControllerSourceTypePhotoLibraryUIImagePickerControllerSourceTypeSavedPhotosAlbum

这些是访问 iPhone 照片库的。

【讨论】:

  • 两者都没有。但它确实有 AVAsset 方法,例如 AVAssetImageGenerator。这些会触发权限对话框吗?
  • 我不是 100% 确定,但据我所知,您不需要任何 AVAsset 代码。在我的应用程序中,我实现了自己的照片拍摄,我根本不需要 AVAsset(我的代码中没有任何对 AVAsset 的引用)。您可以尝试注释掉包含 AVAsset 的所有部分。您是否也考虑过使用不同的框架?我知道 DIYCamera 很容易使用,当我没记错时,如果您只是使用相机部分,它并没有要求您获得照片访问权限!
  • DIYCamera 实际上是我正在使用的库。我添加了原始帖子的链接。
【解决方案2】:

将“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];

【讨论】:

  • 不认为您可以共享您的代码以通过 DIYCAM 保存到沙箱? DIYAV/DIYCAM 的文档有点少...
猜你喜欢
  • 2019-04-17
  • 2016-07-15
  • 1970-01-01
  • 2017-02-01
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
相关资源
最近更新 更多