【问题标题】:Flutter/iOS: Integrated plugin requests camera permission which is not required in appFlutter/iOS:集成插件请求相机权限,这在应用程序中不需要
【发布时间】:2021-11-17 23:47:13
【问题描述】:

在我的 iOS/Flutter 应用程序中,我使用的是 QR 阅读器插件。我的要求是仅从图像中识别 QR 数据,而不是从相机中识别。但该插件同时提供。

因此,我的应用不需要相机权限,因此我没有将其添加到 Info.plist 文件中。

不幸的是,Apple 以Missing Purpose String: NSCameraUsagePermission 为由拒绝了该应用。

因为我还集成了插件permission_handler,所以我已经将这个添加到我的podfile

  config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
    '$(inherited)',

    ...

    ## dart: PermissionGroup.camera
    'PERMISSION_CAMERA=0',

    ...
  ]

我认为这可以帮助我解决所描述的问题:添加权限,插件请求但在我的应用程序中不需要。显然不是。

有没有办法做到这一点:在使用请求插件的同时拒绝相机权限?

【问题讨论】:

    标签: ios xcode flutter dart


    【解决方案1】:

    上次我遇到这样的问题,我在info.plist 中写了权限描述,并明确表示没有使用该权限。在你的情况下,它应该是这样的。

    <key>NSCameraUsageDescription</key>
    <string>Not used but enfored by a dependency</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Read QR codes from saved images</string>
    

    尽管如此,苹果还是接受了我的应用。只要你明确表示它应该没问题。 如果他们拒绝它,我可能会分叉插件并在代码中删除权限。

    【讨论】:

    • 是的,这确实是我的中间解决方案。但我真的在寻找一个更好的......不过还是谢谢你:)
    • 祝你好运!但由于插件是用 Flutter 设计的,我不相信存在更好的插件。
    【解决方案2】:

    根据permission_handler 指南,您必须将所有未在应用中使用的权限标记为已评论。


    根据插件指南,删除您想要使用的权限前面的 # 字符。例如,如果您需要访问相机,请确保代码如下所示:

     ## dart: PermissionGroup.calendar
       'PERMISSION_CAMERA = 1',
    

    在您的情况下,您在podfile 中添加了'PERMISSION_CAMERA=0',因此Apple 期望在info.plist 文件中获得相机权限,但那里缺少。所以更新你的podfile如下。

    config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
            '$(inherited)',
    
            ## dart: PermissionGroup.calendar
            # 'PERMISSION_CAMERA=1',
    ]
    

    注意:无论您在podfile 中取消注释的任何权限,请确保您在info.plist 文件中添加相同的权限并添加正确的描述(在您的应用程序)。

    【讨论】:

    • 你确定吗?我很确定 'PERMISSION_CAMERA = 0' 是没有权限的。在我添加我的 QR 插件之前,它已经工作了。在此之前,没有提出任何问题。所以,我确信虽然 Podfile 是这样的。所以没有额外的插件和'CAMERA = 0'一切都很好。所以,如前所述,我对 permission_handler 没有问题,但新插件。
    • @S-Man 请检查权限处理程序的设置指南。 pub.dev/packages/permission_handler#setup
    • @S-Man 他们还在podfile 设置中进行了一些更改以获取权限。请查看版本 8.0.0 的更新日志:pub.dev/packages/permission_handler/changelog#800 另外,我也编辑了答案,以便您清楚理解。
    • 是的,正如您在链接文档中看到的那样,他们声明“例如,当您不需要相机许可时,只需添加 'PERMISSION_CAMERA=0'”,这正是我所做的。所以,我仍然确信,对于权限处理程序来说,一切都很好,但不是我的 QR 插件......
    • @S-Man 请您是否使用权限...您必须在 podfile 中添加所有权限组...在您的情况下,您唯一需要注意的是只需将PERMISSION_CAMERA = 1 注释掉而不是PERMISSION_CAMERA = 0 并确保您的info.plist 文件中没有NSCameraUsagePermission 它肯定会解决您的问题。
    猜你喜欢
    • 2020-01-29
    • 2020-07-31
    • 2022-12-14
    • 2018-05-31
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多