Categories
ios swift wkwebview

WKWebView is trying to run on background, although it’s closed and should be disposed

I have a simple WKWebView in a UIViewController container in the application. User will open this UIViewController container with WKWebView, and then will eventually close it with navigation “Back” item. The navigation item disposes container and WKWebView. It works, but on every closure I see the following errors in the log:

First pair of errors:

[assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 “Target is not running or required target entitlement is missing” UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:”com.apple.webkit” name:”Background” sourceEnvironment:”(null)”>, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>

[ProcessSuspension] 0x7f8f9d404210 – ProcessAssertion: Failed to acquire RBS Background assertion ‘WebProcess Background Assertion’ for process with PID 27176, error: Error Domain=RBSAssertionErrorDomain Code=3 “Target is not running or required target entitlement is missing” UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:”com.apple.webkit” name:”Background” sourceEnvironment:”(null)”>, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}

Second pair of errors:

[assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=2 “Specified target process does not exist” UserInfo={NSLocalizedFailureReason=Specified target process does not exist}>

[ProcessSuspension] 0x7f8f9d005c30 – ProcessAssertion: Failed to acquire RBS Background assertion ‘WebProcess Background Assertion’ for process with PID 27176, error: Error Domain=RBSAssertionErrorDomain Code=2 “Specified target process does not exist” UserInfo={NSLocalizedFailureReason=Specified target process does not exist}

Third pair of errors:

Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service

Could not signal service com.apple.WebKit.Networking: 113: Could not find specified service

The WKWebView is disposed from container UIViewController’s viewDidDisappear (also tried to move it to viewWillDisappear, which made no difference) in the following way:

webView.stopLoading()
webView.configuration.userContentController.removeScriptMessageHandler(forName: "...")
webView.navigationDelegate = nil
webView.scrollView.delegate = nil
webView = nil

There’s no negative side effects of those errors it seems. But I want to understand: am I missing some cleanup on WKWebView disposal? Why does it try to “enter background”?