我们有一个音频应用程序,我们想要添加CarPlay到它。这个应用程序基本上有一个广播流列表,用户可以选择播放哪一个。
如果我在连接到CarPlay的时候从手机上启动应用程序,或者我从CarPlay启动它,并且设备是解锁的,那么一切都很好。如果设备被锁定,应用程序就会启动,我可以在CarPlay中看到列表中的元素,但是当其中一个被选中时,什么也不会发生。
我已经实现了MPPlayableContentDelegate,MPPlayableContentDataSource和应用程序有音频背景模式选择。流从网络中获取,然后缓存到磁盘上。
是否每个人都遇到过同样的问题,或者对如何解决这个问题有任何建议?你知道苹果是否有一个带有CarPlay支持的简单的工作音频应用程序来测试?
发布于 2018-11-13 15:59:04
我解决了这个问题,将代码移动到安装和激活音频会话到AppDelegate。以前,它是在管理所有流的单例中处理的,它是MPPlayableContentDelegate和MPPlayableContentDataSource。
将这个迁移到AppDelegate解决了问题,但我仍然不知道为什么:
func startAudioSession() {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.playback, mode: .default)
try audioSession.setActive(true, options: AVAudioSession.SetActiveOptions.notifyOthersOnDeactivation)
} catch let error as NSError {
print("Unable to activate audio session: \(error.localizedDescription)")
}
}我还向Info.plist中的条目添加了stremaming的域,以允许HTTP (NSExceptionAllowsInsecureHTTPLoads)。在此之前,只有Allow Arbitrary Loads说得太正确了。不知道这是否有帮助。
https://stackoverflow.com/questions/53190068
复制相似问题