我使用swift 4和IOS 12,正在使用webViewKit加载网站。 Web应用程序的功能之一是扫描二维码,我已经成功加载了网站,但是我仍在努力如何访问设备摄像头来扫描二维码,在android中一切正常,包括使用webView onPermissionRequest方法的该二维码扫描仪。我已经尝试过了 Key : Privacy - Camera Usage Description in info.plist ,并在加载网址时在此处AVCaptureDevice.authorizationStatus(for: .video)上添加这些代码行,然后按Web按钮扫描二维码。根据我们的Web开发人员的说法,此按钮按下将执行javascript未定义函数,但我不知道如何使webViewKit响应此按钮单击事件,最难的部分是没有要评估的日志或NSLogs。我是IOS开发的新手,大约有一个月的时间。谢谢
var WebCodeCamJS = function(element) {
'use strict';
this.Version = {
name: 'WebCodeCamJS',
version: '2.7.0',
author: 'Tóth András',
};
var mediaDevices = window.navigator.mediaDevices;
mediaDevices.getUserMedia = function(c) {
return new Promise(function(y, n) {
(window.navigator.getUserMedia || window.navigator.mozGetUserMedia || window.navigator.webkitGetUserMedia).call(navigator, c, y, n);
});
}
HTMLVideoElement.prototype.streamSrc = ('srcObject' in HTMLVideoElement.prototype) ? function(stream) {
this.srcObject = !!stream ? stream : null;
} : function(stream) {
if (!!stream) {
this.src = (window.URL || window.webkitURL).createObjectURL(stream);
} else {
this.removeAttribute('src');
}
};
上面的代码是一个名为webcodecamjs.js的js函数,它是从网页上的按钮单击事件执行的。我发现解决方案here存在类似问题,但我不确定如何实现,它说
- 现在添加定义各种WebRTC类,功能并将JS调用传递到WKWebView的JS文件(WebRTC.js)。
- 在WKWebView中,在文档开始处插入脚本:
该WebRTC.js文件放在哪里?我所做的就是在ios项目中创建一个新文件并将其命名为WebRTC.js,我还尝试将其重命名为webcodecamjs.js,就像我们在Web js文件中一样,如何在func viewDidAppear中做到这一点
let contentController = WKUserContentController()
contentController.add(self, name: "callbackHandler")
let script = try! String(contentsOf: Bundle.main.url(forResource: "webcodecamjs", withExtension: "js")!, encoding: String.Encoding.utf8)
contentController.addUserScript(WKUserScript(source: script, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: true))
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
configuration.userContentController = contentController
configuration.allowsPictureInPictureMediaPlayback = true
webView.navigationDelegate = self
webView.configuration.preferences = configuration.preferences
WKWebView.load(webView)(NSURLRequest(url: NSURL(string: encodedLoginUrl)! as URL) as URLRequest)
webView是
@IBOutlet弱变量webView:WKWebView
未声明如下
var webView:WKWebView
这就是为什么我不能做下面的事情,原因是它给了我'弱'警告
webView = WKWebView(框架:CGRect.zero,配置:配置)
答案 0 :(得分:0)
您可以添加代码段进行检查吗?