我的任务是找到为什么这个应用程序停止我的iPod上的音乐播放器。目前,在XCode中,我已经在main()
的第一行设置了断点,但是当我到达那一行时,音乐播放器已经停止了。
我可以想象任何静态构造函数都已经运行了,但是我已经搜索了明显的罪魁祸首(任何提及AVAudioSession
),并且发现在main()
之前没有运行任何东西。
由于代码库非常庞大,盲目地搜索每个文件中的每个构造函数都会很痛苦,而不知道我在寻找什么。 你能告诉我是否有任何类型的XCode项目属性可以阻止外部音频播放,或者我能找到什么? 感谢
编辑:我把它缩小了很多。 首先,出于某种原因,XCode似乎忽略了我的大多数断点,这些断点完全误导了我。 它确实是一个对象的静态初始化,最终导致这个调用:newDevice = alcOpenDevice(NULL);
出于某种原因,我实际上可以在这里找到一个断点。去搞清楚... 所以,我在这条线上播放音乐,但是在我运行之后没有。看起来openal的设备初始化关闭了所有外部音乐,出于某种原因......试图理解为什么,以及如何绕过它......
答案 0 :(得分:1)
查看AVAudioSession's Categories的文档,听起来您的应用具有不可混合的AVAudioSessionCategory
,如果您将其更改为AVAudioSessionCategoryAmbient
,是否可以重现?
答案 1 :(得分:0)
您是否尝试过通过AppDelegate
设置要播放的音乐?
尝试使用它,如果用户重新加载到应用程序中,它会继续播放音乐。
答案 2 :(得分:0)
好的,我发现了问题。出于某种原因,XCode没有帮忙。所以我到处都设置了很多断点,看看在进入main之前会运行什么。这是XCode让我失望的地方,因为我知道代码正在运行,但由于某种原因,断点没有被触发。另外,出于某种原因,其他人也这样做了,所以我仍然有那个特别的谜团要解决。
除此之外,问题是在AVAudioSession配置了AVAudioSessionCategoryAmbient之前初始化OpenAL。切换这两个后,一切工作都很好。
谢谢大家的帮助!