我正在使用AudioUnit
从TeamSpeak服务器播放音频,但是当我在iOS Simulator上调用AudioUnitInitialize
时,我不断收到macOS提示以允许麦克风访问,即使我想只能播放。
在真实的设备上,一切正常,没有任何本机提示,但是在模拟器中运行应用程序时确实很烦人,因为每次运行应用程序时都会出现此提示。
- (void)setupRemoteIO
{
AudioUnit audioUnit;
// Describe audio component
AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_RemoteIO;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
// Get component
AudioComponent inputComponent = AudioComponentFindNext(NULL, &desc);
// Get audio unit
OSStatus status = AudioComponentInstanceNew(inputComponent, &audioUnit);
if (status != noErr)
{
printf("AudioIO could not create new audio component: status = %i\n", status);
}
UInt32 enableIO;
AudioUnitElement inputBus = 1;
AudioUnitElement outputBus = 0;
//Disabling IO for recording
enableIO = 0;
AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, inputBus, &enableIO, sizeof(enableIO));
//Enabling IO for playback
enableIO = 1;
AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, outputBus, &enableIO, sizeof(enableIO));
// initialize
status = AudioUnitInitialize(audioUnit);
if (status != noErr)
{
printf("AudioIO could not initialize audio unit: status = %i\n", status);
}
}
答案 0 :(得分:1)
这是macOS Mojave中Xcode(10.2之前的版本)的一个已知错误(我说是众所周知的,因为在播放视频时它发生在我身上的时间很多,而且还因为我在寻找它时,我发现了很多人有相同的问题);尽管我找不到苹果的任何报道。 根据环境,启动应用程序的方式,Xcode版本和macOS Mojave版本,可能存在一些解决方法。
这只会在模拟器中发生,并且您也说过,在大多数设备上都不需要麦克风访问才能使用音频/视频功能,因此不会在真实设备上发生。
在此错误得到解决的同时,您可以尝试:
在macOS上进行"Security & Privacy"
设置
"Microphone"
然后在右侧面板disable
中选择Xcode的选项
您可以尝试摆脱的另一件事是将硬件音频输入更改为内置麦克风:
在Xcode 10.2中更新:
现在仅提示您一次授权麦克风访问所有模拟器设备。 (45715977)