首页 > 解决方案 > iOS 模拟器在麦克风权限请求时崩溃

问题描述

我的环境:

当我在 iOS 模拟器中请求麦克风权限时,我的应用程序崩溃了。

PermissionStatus mic = await PermissionHandler()
    .checkPermissionStatus(PermissionGroup.microphone);
print('microphone permission? ${mic.toString()}');
try {
    if (mic != PermissionStatus.granted) {
        await PermissionHandler().requestPermissions([PermissionGroup.microphone]);
    }
} catch (e) {
    print(e);
}

没有抛出或捕获错误,但在颤振调试控制台中,我看到:

flutter: microphone permission? PermissionStatus.unknown
Lost connection to device.

这意味着checkPermissionStatus()返回unknown. 但是当我请求许可时,应用程序崩溃了。我无法在真正的 iPhone 上尝试这个。一切都在 Android 模拟器上完美运行。

我发现 Xcode 10.1 中的麦克风存在一些问题:

我试过的

我可以尝试升级到 Xcode 10.2,但我需要先获得 mojave。如果可能的话,尽量避免这种情况,因为它甚至可能无法解决问题。我也可以尝试使用真正的 iPhone 设备而不是模拟器。不过,希望模拟器不会崩溃。

10.1任何人都可以使用 Xcode /10.2模拟器授予麦克风权限permission_handler: 3.0.0吗?另一个颤振权限插件呢?

标签: iosxcodeflutterios-simulatormicrophone

解决方案


请确保您已将正确的条目添加到Info.plist文件中(对于 Flutter 项目,此文件位于ios/Runner/文件夹中)。

要访问麦克风,您需要在<dict>标签之间添加以下行:

<key>NSMicrophoneUsageDescription</key>
<string>this application needs access to the microphone</string>

更多信息可以在这里找到。

一个完整的例子Info.plist可以在这里找到。


推荐阅读