iOS : A white square is displayed when WKWebView gets a motion sensor

5.8k views Asked by At

I'm making a VR application which uses 360degee images. This application show images with HTML. WKWebView is enable to get device's orientation.

webView.uiDelegate = self

It is possible to show omni direction images.

Though, it shows white square box befor to show contents. And tap this square, movie controller will be appeared. Then click "X"close button, this square wipe disappear and contents will be start.

White square on black screen

Below is error message when I started this application on simulator.

2020-10-05 14:03:00.220288+0900 WebViewButton[70653:4552750] [assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}>
2020-10-05 14:03:00.220599+0900 WebViewButton[70653:4552750] [ProcessSuspension] 0x106df57e0 - ProcessAssertion: Failed to acquire RBS MediaPlayback assertion 'WebKit Media Playback' for process with PID 70655, error: Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}
2020-10-05 14:03:00.222371+0900 WebViewButton[70653:4552750] [assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}>
2020-10-05 14:03:00.225196+0900 WebViewButton[70653:4552750] [ProcessSuspension] 0x106df5810 - ProcessAssertion: Failed to acquire RBS MediaPlayback assertion 'WebKit Media Playback' for process with PID 70653, error: Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}
2020-10-05 14:03:03.652871+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b09fe0> - changing property masksToBounds in transform-only layer, will have no effect
2020-10-05 14:03:03.653989+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b17200> - changing property masksToBounds in transform-only layer, will have no effect
2020-10-05 14:03:03.658501+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b0a520> - changing property masksToBounds in transform-only layer, will have no effect
2020-10-05 14:03:03.663858+0900 WebViewButton[70653:4552750] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600003b0a7e0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2020-10-05 14:03:03.704443+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b07a40> - changing property masksToBounds in transform-only layer, will have no effect
2020-10-05 14:03:03.706753+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b0b340> - changing property masksToBounds in transform-only layer, will have no effect
2020-10-05 14:03:03.727357+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b0a520> - changing property allowsGroupBlending in transform-only layer, will have no effect
2020-10-05 14:03:03.727779+0900 WebViewButton[70653:4552750] <CATransformLayer: 0x600003b07a40> - changing property allowsGroupBlending in transform-only layer, will have no effect

It's said that there is not MediaPlayback resources.

What? It not to need Madiaplayer.

How to delete this white square? How to disable MediaPlayback?

Below is source code

import UIKit
import WebKit

class WebViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
    @IBOutlet weak var webView: WKWebView!
    @IBOutlet weak var backBtn: UIButton!
    
    var rcvURL="" //Contents URL
    override func viewDidLoad() {
        super.viewDidLoad()
        webView.uiDelegate = self // enable to get omni direction sensor
        webView.navigationDelegate = self
        openUrl(urlString: rcvURL)
    }
    
    /** BackButton **/
    @IBAction func back(_ sender: Any) {
        self.dismiss(animated: true, completion: nil)
    }
    /** Open Contents URL **/
    func openUrl(urlString: String) {
       let url = URL(string: urlString)
       let request = NSURLRequest(url: url!)
       webView.load(request as URLRequest)
   }
}
  • this environment is: Xcode12.0.1 iOS 14.0.1 (iPhoneXR) Swift 5.3
1

There are 1 answers

2
prophet5 On

enter image description here

Inspector of WebView, Check true at Inline Playback.