我们有一个音频应用程序,我们想向其中添加CarPlay。该应用程序基本上有一个广播流列表,用户可以选择其中一个播放。
如果我在连接到CarPlay的同时从手机启动该应用程序,或者从CarPlay启动该应用程序且设备已解锁,则一切都很好。如果设备被锁定,则应用程序将启动,我可以在CarPlay中看到列表中的元素,但是当选择其中之一时,什么也不会发生。
我已实现MPPlayableContentDelegate
,MPPlayableContentDataSource
,并且该应用已选择了音频背景模式。从网络中获取流,然后将其缓存到磁盘。
每个人都遇到过同样的问题或对如何解决有任何暗示吗?你知道苹果是否有一个简单的音频应用程序可以支持CarPlay进行测试?
答案 0 :(得分:0)
我解决了将代码移至设置并激活到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中的App Transport Security条目中,以允许HTTP(NSExceptionAllowsInsecureHTTPLoads
)。之前只有Allow Arbitrary Loads
声明太真实。不知道有没有帮助。