Разрешение пользователя от нажатия кнопки webViewKit - PullRequest
0 голосов
/ 14 января 2019

Используя swift 4 и IOS 12, я использую webViewKit для загрузки веб-сайта. Одной из функций веб-приложения является сканирование qrcode, я успешно загрузил веб-сайт, но я все еще пытаюсь получить доступ к камере устройства для сканирования qr-кода, в android все работает нормально, включая этот сканер qr-кода с помощью метода webView onPermissionRequest. Я уже пробовал это Ключ: конфиденциальность - описание использования камеры в info.plist и добавление этих строк кода здесь AVCaptureDevice.authorizationStatus (для: .video) при загрузке URL-адреса перед нажатием веб-кнопки для сканирования qr-кода. По словам нашего веб-разработчика, это нажатие кнопки выполняет неопределенную функцию 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');
    }
};

Выше кода - функция js с именем webcodecamjs.js, которая выполняется из события нажатия кнопки на веб-странице. Я нашел похожую проблему с решением здесь , но я не совсем уверен, как это реализовать, он говорит

  1. Теперь добавьте JS-файл (WebRTC.js), который определяет различные классы WebRTC, функции и передает вызовы в WKWebView.
  2. В 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 слабый var webView: WKWebView

не указано ниже

var webView: WKWebView

вот почему я не могу сделать что-то вроде ниже, потому что это дает мне «слабое» предупреждение

webView = WKWebView (фрейм: CGRect.zero, конфигурация: config)

1 Ответ

0 голосов
/ 15 января 2019

Не могли бы вы добавить фрагмент кода для проверки?

...