繁体   English   中英

flutter 插件开发和 iOS 本机代码:避免应用启动时的权限请求?

[英]flutter plugin development and iOS native code: avoid permission request on app launch?

大家好,提前感谢您的时间和奉献精神。

我正在开发一个需要访问麦克风的 flutter 插件。 我已经能够这样做,但是当我测试插件(使用示例或使用新的或现有的应用程序)时,我遇到了有关麦克风权限的以下问题:

初始上下文:

插件本身不请求权限。 这是更大发展的一部分,其想法是该应用程序将在类似屏幕的向导上请求权限。 插件的作用是检查是否授予了授予者权限(在本例中为麦克风)

场景 1:Info.plist 上没有NSMicrophoneUsageDescription

在这种情况下,在真实设备上运行应用程序(总是在调试上下文中)将自动崩溃。 在这一点上,我没有调用任何可能尝试使用麦克风的方法。 事实上,如果我使用新应用程序只是添加依赖项而不导入任何内容,则会导致崩溃:

此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。 应用程序的 Info.plist 必须包含一个 NSMicrophoneUsageDescription 键和一个字符串值,向用户解释应用程序如何使用这些数据。

场景 2: NSMicrophoneUsageDescription存在于 Info.plist

这修复了崩溃,但也会导致应用程序在启动后立即请求麦克风权限。 这很好,但它与向导屏幕的要求相冲突。

由于我不是 Flutter 插件开发方面的专家,因此这可能是正常流程,但我会觉得这很奇怪。 如果是这种情况,有没有办法避免应用程序请求权限,以便我可以按需进行?

再次感谢

编辑1:

我被要求显示代码,但只是将库添加为依赖项会触发此操作。

这可能是调试的事情吗?

编辑2:

问题是插件根目录上的 singleton 模式初始化 iOS 本机代码。 谢谢大家

我发现了问题所在:代码使用 singleton 作为入口点,并且正在实例化 AudioEngine。 我对这个不好。 感谢大家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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