我正在开发一个应用程序,可以在Swift中使用WKWebView访问网页。此网络会自动开始播放声音。我不想让自动播放声音。我想使用类似mediaPlayBackRequieresUserAction = true
的东西,但它不能与WKWebView一起使用。
我正在尝试像
这样的东西webConfiguration.mediaTypesRequiringUserActionForPlayback = []
webConfiguration.mediaTypesRequiringUserActionForPlayback = .all
webConfiguration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAll
但它没有用,Xcode正在向我展示:
无法指定类型的值' [WKAudiovisualMediaTypes] .Type'输入 ' WKAudiovisualMediaTypes'
自动产生音频声音的元素是:
<audio src="audio/alarm.mp3" preload="auto" loop="true" class="alarm mp3" type="audio/mp3"></audio>
<audio src="audio/alarm2.mp3" preload="auto" loop="true" class="urgent alarm2 mp3" type="audio/mp3"></audio>
这是我的WKWebView代码:
import UIKit
import WebKit
class WidgetViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
var webView : WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://danfg95glucose.azurewebsites.net/")
let request = URLRequest(url: url!)
let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = false
webConfiguration.mediaTypesRequiringUserActionForPlayback = []
webView = WKWebView(frame: CGRect( x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - 500 ), configuration: webConfiguration)
webView.navigationDelegate = self
webView.load(request)
self.view.addSubview(webView)
}
}
抱歉我的错误,我是新手,我正在学习编程。非常感谢您的每一个回复。
答案 0 :(得分:1)
您只需要设置一次mediaTypesRequiringUserActionForPlayback。这应该有用。
protected void Page_Load(object sender, EventArgs e)
{
btnAsync.Click += Dump;
btnFull.Click += Dump;
if (!IsPostBack)
tbText.Text = "Line1\r\nLine2\r\nLine3";
}
private void Dump(object sender, EventArgs e)
{
lDump.Text = tbText.Text.Replace("\r", "[CR]").Replace("\n", "[LF]");
}
你可以用它来限制它只是音频
webConfiguration.mediaTypesRequiringUserActionForPlayback = .all
答案 1 :(得分:1)
好郁闷。 我发现在运行时更改 mediaTypesRequiringUserActionForPlayback 完全被忽略。 webView 配置仍然有 .none 因为它的价值 ☹️
所以在我的 ViewController 的 viewDidLoad() 中我做了这个
private func workaroundAppleUserActionForPlaybackBug() -> WKWebView
{
// you can set the value in the configuration, but it doesn't actually change!
// even setting these values in IB doesn't work, it's always ZERO (meaning auto playback)
//
let frame = self.webView.frame
let configuration = self.webView.configuration
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypes.all
return WKWebView(frame: frame, configuration: configuration)
}
override func viewDidLoad()
{
super.viewDidLoad()
self.webView = workaroundAppleUserActionForPlaybackBug()
}