iOS 模拟器因麦克风权限请求而崩溃

标签 ios xcode flutter ios-simulator microphone

我的环境:

  • 权限处理程序 3.0.0
  • flutter v1.2.1
  • OSX High Sierra 10.13.6
  • Xcode 版本 10.1。

当我在 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 调试控制台中,我看到:

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

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

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

我尝试过的

  • 使用 flutter clean 进行全新构建
  • 在硬件 > 音频输入中更改模拟器麦克风输入

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

是否有人能够使用 permission_handler: 3.0.0 在 Xcode 10.1/10.2 模拟器中授予麦克风权限?另一个 flutter 权限插件怎么样?

最佳答案

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

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

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

可以找到更多信息here.

还有一个 Info.plist 的完整示例可以查到here.

关于iOS 模拟器因麦克风权限请求而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858491/

相关文章:

ios - Swift3 如何像在 android 中一样在 iOS 中实现底部表单

ios - 错误 : global. nativeTraceBeginSection 不是函数

ios - 如何根据构建配置将命令行参数传递给 Xcode

flutter - 输入数据必须是 AES CTR 模式下密码 block 大小的倍数

Flutter:如何将可访问性重点放在自定义应用程序栏上

ios - 如何使用 CGContextRef 绘制两个单独的形状

html - iPad 上的 iFrame 无法在内部呈现全部内容

iOS 项目无法编译,因为它找不到 pch 文件,因为我不得不重命名文件夹

iphone - UITableView 中的 UITextField 中的 UIDatePicker 实时更新

android - Flutter:任务 ':location:verifyReleaseResources' 执行失败