gpt4 book ai didi

ios - 不允许 webView 在 Swift 上播放声音

转载 作者:可可西里 更新时间:2023-11-01 01:58:43 36 4
gpt4 key购买 nike

我正在使用 WKWebView 开发一个使用 Swift 构建的带有两个 webView 的 iOS 应用程序。其中一个网络有默认声音,每次加载 webView 时都会发出声音(网络不是我的)。所以我需要停止或不允许 webView 重现任何声音。有什么方法可以得到这个?我尝试了一些代码,但它不起作用。我正在使用 xCode 9 和 Swift 4。

这是我试过的代码(但它不起作用):

do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
}
catch let error as NSError {
print(error)
}

do {
try AVAudioSession.sharedInstance().setActive(false)
}
catch let error as NSError {
print(error)
}

这是我的代码:

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
super.viewDidLoad()

let url = URL(string: "theWeb")
let request = URLRequest(url: url!)
webView.navigationDelegate = self
webView.load(request)
}
}

感谢您的回复,抱歉我的问题,我是编程新手。

最佳答案

有问题的元素是这些:

<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>

我要尝试的第一件事是更改 WKWebViewConfiguration。为此,您必须以编程方式创建 WKWebView 并将其插入到您的 View 中。不幸的是,您不能使用 Interface Builder 执行此操作。这是一些可能有效的未经测试的代码。 (如果没有,我们可以进一步深入研究,但这就是我要开始的地方。如果这不起作用,下一步是实现 WKNaviagtionDelegate 来拒绝音频加载请求。 )

let config = WKWebViewConfiguration()
config.mediaTypesRequiringActionForPlayback = WKAudiovisualMediaTypeAll

webView = WKWebView(frame: view.bounds, configuration: config)
view.addSubview(webView)

如果您的 Web View 没有填满整个 View ,那么我发现一个方便的方法是在 Interface Builder 中添加一个空白的 UIView 并将其放置在您想要的位置它。然后在运行时将 webView 放在那个空白 View 中(并使其大小相同)。这很好,因为它允许您在 IB 中完成所有布局,但仍会在需要的地方插入 Web View 。

关于ios - 不允许 webView 在 Swift 上播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346390/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com