作者:张小虎要努力 | 来源:互联网 | 2023-01-17 13:44
在iOS 11中需要有关Audio Units的帮助.我有两个iOS应用程序:一个提供V3音频单元的应用程序和一个用于Audio Units的主机应用程序.问题是,当我使用iOS 11 SDK在Xcode 9.0中编译主机应用程序并在带有iOS 11的iPhone上运行它时,主机应用程序看不到音频单元.
我做了一些研究,这就是我得到的:问题影响任何音频单元应用程序,而不仅仅是这两个特定的应用程序.如果您使用Apple网站上的AudioUnitV3Example项目(https://developer.apple.com/library/content/samplecode/AudioUnitV3Example/Introduction/Intro.html),您可以轻松地看到同样的问题.此示例项目包含两个应用程序:iOSAUv3Host和提供音频单元应用程序扩展的iOSFilterDemoApp.您需要在iOS设备上安装这两个应用程序.
当您启动AUv3Host应用程序时,它将显示系统中所有可用音频单元的列表:
在iOS 10上,有16个音频单元可用 - 苹果有15个默认音频单元,Demo有FiltedDemo音频单元.
在iOS 11上,Apple只有15个Audio Units-15默认音频单元.AUv3Host应用程序没有看到FiltedDemo音频单元(见截图).
我还使用iOS 10 SDK(来自https://developer.apple.com/download/more/)下载了Xcode 8.3.3,并尝试了构建SDK和设备的iOS版本的所有可能配置.这是我得到的:
FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 11设备= BAD(否FiltedDemo)建
FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 11设备= BAD(否FiltedDemo)建
FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的10 SDK +的iOS设备11 = OK内置(FiltedDemo存在)
FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的10 SDK +的iOS设备11 = OK内置(FiltedDemo存在)
FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的10 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的10 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
因此,看起来问题仅在BOTH条件有效时出现:设备安装了iOS 11,主机应用程序使用iOS 11 SDK进行编译.音频单元编译不会影响问题.
你有任何想法如何解决这个问题?有没有办法解决这个问题,或者它是iOS 11 SDK的错误,这只能由Apple修复?
1> Padavan..:
问题解决了.我还将这个问题作为bug发布在bugreport.apple.com上,我刚从Apple团队那里得到答案:
Engineering已请求有关您的错误报告的以下信息:请将应用程序间音频功能添加到您的应用程序中.这是一项隐私要求,并在WWDC演讲期间提到过.由于AUv3Host需要自签名,因此权利将丢失.所有AUv3主机都需要Inter-App Audio授权才能看到v3音频单元.我们将研究如何使其更加明确,并将更新样本以避免这些问题.
这就像一个魅力.iOS 11设备现在可以看到所有16个音频单元,包括FiltedDemo.
如果这个要求更明显,那就太好了.我希望Apple能够更新他们的文档和示例项目.