【发布时间】:2014-01-16 20:16:12
【问题描述】:
好吧,我正在尝试在我的 iOS 应用程序中实现 IAA,并为此仔细研究了 Apple“InterAppAudioSuite”以及 WWDCXIII 602 视频。我的应用程序的行为类似于 Apple InterAppAudioSampler,并且我在此示例中使用了尽可能多的代码。
我的应用程序启动,我在日志窗口中收到一条“AudioOutputUnitPublish 存根调用”消息 - 我猜 - 一切正常。然后我从 Apple 启动“InterAppAudioHost”应用程序并尝试连接我的应用程序(充当音频远程乐器)。我的应用程序在应用程序列表中可用。但后来它无法连接,我得到以下日志:
2014-01-16 11:10:27.556 DM1[141:60b] Could not search: {
NSNetServicesErrorCode = "-72000";
NSNetServicesErrorDomain = 10;
}
2014-01-16 11:10:27.558 DM1[141:60b] Could not publish service: {
NSNetServicesErrorCode = "-72000";
NSNetServicesErrorDomain = 10;
}
(我的应用程序中没有调用任何与 IAA 相关的方法。)
然后“InterAppAudioHost”退出,它的日志显示:
2014-01-16 11:10:47.555 IAA Host[150:60b] 11:10:47.554 ERROR: [0x3b2e718c] 168: Timed out waiting for app to launch
2014-01-16 11:10:47.557 IAA Host[150:60b] 11:10:47.557 ERROR: [0x3b2e718c] >audiocomp> 59: null from factory proc
2014-01-16 11:10:47.559 IAA Host[150:60b] error -1 from AUGraphAddNode (hostGraph, &desc, &instrumentNode)
我仔细检查了我的 plist,它是这样的:
<plist version="1.0">
<dict>
<key>AudioComponents</key>
<array>
<dict>
<key>type</key>
<string>aurg</string>
<key>subtype</key>
<string>fld1</string>
<key>manufacturer</key>
<string>fglb</string>
<key>name</key>
<string>appName<string>
<key>version</key>
<integer>1</integer>
</dict>
<dict>
<key>type</key>
<string>auri</string>
<key>subtype</key>
<string>fld1</string>
<key>manufacturer</key>
<string>fglb</string>
<key>name</key>
<string>appName</string>
<key>version</key>
<integer>1</integer>
</dict>
</array>
...
我的发布方式:
- (void) publishOutputAudioUnit {
OSStatus result;
const UInt32 version = 1;
//-----------------------
// Publish as Remote Generator
//-----------------------
AudioComponentDescription IAAGeneratorDesc = { kAudioUnitType_RemoteGenerator,'fld1','fglb',0,0 };
result = AudioOutputUnitPublish(&IAAGeneratorDesc, CFSTR("CompanyName : AppName"),version, auRemoteIO);
if (result != noErr)
NSLog(@"AudioOutputUnitPublish generator result: %d", (int)result);
//-----------------------
// Publish as Remote Instrument
//-----------------------
AudioComponentDescription IAARemoteDesc = { kAudioUnitType_RemoteInstrument,'fld1','fglb',0,0 };
result = AudioOutputUnitPublish(&IAARemoteDesc, CFSTR("CompanyName : AppName"),version,auRemoteIO);
if (result != noErr)
NSLog(@"AudioOutputUnitPublish instrument result: %d", (int)result);
}
主机和节点之间似乎存在一些 URL 问题,但我就是想不通。
任何帮助都会非常、非常、非常受欢迎,因为我真的被困住了。非常感谢。
安德烈
【问题讨论】:
标签: ios core-audio