从锁定的设备启动 CarPlay 音频应用程序时无法启动
CarPlay audio app can't start when launched from locked device
我们有一个音频应用程序,我们想给它添加 CarPlay。该应用基本上有一个广播流列表,用户可以select播放哪个。
如果我在连接到 CarPlay 时从 phone 启动应用程序,或者如果我从 CarPlay 启动它并且设备已解锁,一切都很好。如果设备已锁定,应用程序将启动,我可以在 CarPlay 中看到列表中的元素,但是当其中之一被 selected 时,什么也没有发生。
我已经实施了 MPPlayableContentDelegate
、MPPlayableContentDataSource
并且应用程序具有音频背景模式 selected。流从网络获取,然后缓存到磁盘。
大家有没有遇到同样的问题,或者有什么解决办法的提示吗?你知道 Apple 是否有一个简单的工作音频应用程序支持 CarPlay 来测试吗?
我解决了将代码移动到 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 条目中添加了 stremaming 的域以允许 HTTP (NSExceptionAllowsInsecureHTTPLoads
)。之前只有 Allow Arbitrary Loads
stetted too true。不知道有没有帮助。
我们有一个音频应用程序,我们想给它添加 CarPlay。该应用基本上有一个广播流列表,用户可以select播放哪个。
如果我在连接到 CarPlay 时从 phone 启动应用程序,或者如果我从 CarPlay 启动它并且设备已解锁,一切都很好。如果设备已锁定,应用程序将启动,我可以在 CarPlay 中看到列表中的元素,但是当其中之一被 selected 时,什么也没有发生。
我已经实施了 MPPlayableContentDelegate
、MPPlayableContentDataSource
并且应用程序具有音频背景模式 selected。流从网络获取,然后缓存到磁盘。
大家有没有遇到同样的问题,或者有什么解决办法的提示吗?你知道 Apple 是否有一个简单的工作音频应用程序支持 CarPlay 来测试吗?
我解决了将代码移动到 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 条目中添加了 stremaming 的域以允许 HTTP (NSExceptionAllowsInsecureHTTPLoads
)。之前只有 Allow Arbitrary Loads
stetted too true。不知道有没有帮助。