Search code examples
iosswiftwkwebview

Set AVAudioSession Category for WKWebview


I have an WKWebView there I show my site and I play a sound effect with js but when I do so the background music is stop playing. I like to mix in this sound effect with background music like Spotify.

Any idea how I do so?

This is my code in ViewController.swift

    import WebKit
    import AVFoundation

    class ViewController: UIViewController, WKNavigationDelegate {
        
        var webView: WKWebView!
        
        override func loadView() {
            webView = WKWebView()
            webView.navigationDelegate = self
            
            
            // Set so play inline works
            let webConfiguration = WKWebViewConfiguration()
            webConfiguration.allowsInlineMediaPlayback = true
            if #available(iOS 10.0, *) {
                webConfiguration.mediaTypesRequiringUserActionForPlayback = []
            } else {
                // Fallback on earlier versions
                webConfiguration.mediaPlaybackRequiresUserAction = false
            }
            webView = WKWebView(frame: CGRect.zero, configuration: webConfiguration)
            
            //super.init(coder: aDecoder)
            
            view = webView
            
        }
        

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            
            // Set so we can play sound effect without stop background music
            
            
            // Get the local lang from iphone
            var locale = Locale.preferredLanguages[0]
            if (locale.contains("-")) {
                locale = locale.substring(to: locale.characters.index(locale.startIndex, offsetBy: 2))
            }
            
            
            let url = URL(string: "https://test.com/?lang=" + locale)!
            webView.load(URLRequest(url: url))
            webView.allowsBackForwardNavigationGestures = true
            
            // add background color to wkwebview to transparent
            webView.backgroundColor = UIColor.clear
            webView.scrollView.backgroundColor = UIColor.clear
            
            
            // Change the statusbar to vit
            UIApplication.shared.statusBarStyle = .lightContent
            
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }


    }

Solution

  • I have found out that this is not possible.