Swift 5とXcode 11でバックグラウンドでオーディオを再生するのに行き詰まっています。
バックグラウンドモードを有効にしてAVAudioSessionを開始すると機能しなくなり、数秒後にアプリを終了するとアプリが閉じ続けます。
最初に資格を取得しますが、ストリームが開始します。
Error acquiring assertion: <NSError: 0x2829830f0; domain: RBSAssertionErrorDomain; code: 2; reason: "Required client entitlement is missing"> {
userInfo = {
RBSAssertionAttribute = <RBSLegacyAttribute: 0x1050a9040; requestedReason: MediaPlayback; reason: MediaPlayback; flags: PreventTaskSuspend | PreventTaskThrottleDown | WantsForegroundResourcePriority>;
}
バックグラウンドで数秒後に閉じます:
[ProcessSuspension] Background task expired while holding WebKit ProcessAssertion (isMainThread? 1).
アプリを開いたままにすると、オーディオが停止します。
[ProcessSuspension] 0x10dfc8848 - ProcessAssertion::processAssertionWasInvalidated()
Appleはこれを毎年変えるのが大好きです。これまでにiOS 13とXcode 11/Swift 5でこれを動作させている人はいますか?
ありがとう!
[〜#〜] update [〜#〜]:見つけたばかりこの問題はWebViewsで再生されるオーディオのみに影響します。これがiOS 13のバグなのか、Appleが実際にマルチタスクからWebViewを切断しているのか、私にはわからないので、アプリを変更し、オーディオがAVPlayerで再生されています。バックグラウンドオーディオ再び動作します。
あなたはあなたに再開再生オーディオのためのコードを入れますかAppdelegate
func applicationDidEnterBackground(_ application: UIApplication) {
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay])
try AVAudioSession.sharedInstance().setActive(true)
} catch {
print(error)
}
}
さらに、ターゲット機能からオーディオ、エアプレイ、およびピクチャーインピクチャーを作成します