Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 13 - WkWebView: audio stops when in background

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 assertion 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 the audio is 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 it is in background.

like image 247
Marco Martignone Avatar asked Aug 16 '19 14:08

Marco Martignone


Video Answer


1 Answers

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.

like image 200
Kim Biesbjerg Avatar answered Sep 23 '22 07:09

Kim Biesbjerg