问题
I've an app that uses WkWebView to play audio from Soundcloud, on iOS 13 Beta 6 the audio stops when the app is not in foreground, even when Audio is on in Background Modes.
When starting the playback this assertions is thrown:
Error acquiring assertion: <NSError: 0x282cf67c0; domain: RBSAssertionErrorDomain; code: 2; reason: "Required client entitlement is missing"> {
userInfo = {
RBSAssertionAttribute = <RBSLegacyAttribute: 0x1592432e0; requestedReason: MediaPlayback; reason: MediaPlayback; flags: PreventTaskSuspend | PreventTaskThrottleDown | WantsForegroundResourcePriority>;
}
And after entering background state the following assertion is thrown and audio suspended:
Can't end BackgroundTask: no background task exists with identifier 13 (0xd), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.
[ProcessSuspension] Background task expired while holding WebKit ProcessAssertion (isMainThread? 1).
This is not happening in iOS 12, where the audio plays normally when in background.
回答1:
I guess you are using Capacitor.
I'm running into the same issue as you and it looks like the last error about 'no background task exists' has something to do with Capacitor's BackgroundTask
Plugin, wether you're using it or not (BackgroundTask.swift)
It's clear something changed between iOS 12 and iOS 13, but so far haven't figured out how to define the required entitlements for background audio.
EDIT: It only happens when using HTML5 Audio.
来源:https://stackoverflow.com/questions/57526699/ios-13-wkwebview-audio-stops-when-in-background