为WKWebview设置AVAudioSession类别

时间:2017-09-04 08:36:08

标签: ios swift wkwebview

我有一个WKWebView,我在那里展示我的网站。我用js播放声音效果,但是当我这样做时,背景音乐就停止播放了。我喜欢将这种音效与Spotify等背景音乐混合在一起。

知道我是怎么做的吗?

这是我在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.
    }


}

1 个答案:

答案 0 :(得分:0)

我发现这是不可能的。