相关疑难解决方法(0)

在Mojave上更新为Xcode 10.1,现在我的应用程序总是要求使用麦克风

我正在运行AVAudioSession,我怀疑它正在激活麦克风请求,但我只将它用于声音和音乐.在macOS Mojave上运行Xcode 10.1 Simulator时,为什么要激活访问麦克风的请求?我还没有写过一行甚至要求访问它.我的应用程序不需要访问它也不需要它.这是播放音乐的代码:

AVAudioSession *title = [AVAudioSession sharedInstance];
[title setCategory:AVAudioSessionCategoryAmbient error:nil];
[title setActive:YES error:nil];


//MUSIC
NSString *path = [[NSBundle mainBundle] pathForResource:@"music_nature" ofType:@"mp3"];
NSURL *url = [NSURL fileURLWithPath:path];
titleMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];

titleMusic.numberOfLoops = -1;
[titleMusic setVolume:1.0];
[titleMusic play];
Run Code Online (Sandbox Code Playgroud)

如果我注释掉上面的代码,我将不再收到麦克风的请求.但后来我没有任何音乐.

示例项目:https://github.com/Coeur/StackOverflow53109911
(您需要macOS Mojave来重现该问题)

屏幕截图演示错误消息

xcode ios avaudiosession ios-simulator macos-mojave

15
推荐指数
1
解决办法
1068
查看次数

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

我的环境:

  • 权限处理程序 3.0.0
  • 颤振 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);
}
Run Code Online (Sandbox Code Playgroud)

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

flutter: microphone permission? PermissionStatus.unknown
Lost connection to device.
Run Code Online (Sandbox Code Playgroud)

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

我已经看到 Xcode 10.1 中的麦克风存在一些问题:

我试过的

  • 新鲜构建 flutter clean
  • 在硬件 > 音频输入中更改模拟器麦克风输入

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

xcode microphone ios ios-simulator flutter

2
推荐指数
1
解决办法
1330
查看次数