Fixed loading dkbm in webview
This commit is contained in:
parent
771b5923b6
commit
354d11bcc0
@ -1158,7 +1158,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 117;
|
CURRENT_PROJECT_VERSION = 121;
|
||||||
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
||||||
INFOPLIST_FILE = AutoCat/Info.plist;
|
INFOPLIST_FILE = AutoCat/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;
|
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;
|
||||||
@ -1186,7 +1186,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
CODE_SIGN_ENTITLEMENTS = AutoCat/AutoCat.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 117;
|
CURRENT_PROJECT_VERSION = 121;
|
||||||
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
DEVELOPMENT_TEAM = 46DTTB8X4S;
|
||||||
INFOPLIST_FILE = AutoCat/Info.plist;
|
INFOPLIST_FILE = AutoCat/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;
|
INFOPLIST_KEY_CFBundleDisplayName = AutoCat;
|
||||||
|
|||||||
@ -2,12 +2,13 @@ import UIKit
|
|||||||
import WebKit
|
import WebKit
|
||||||
import PKHUD
|
import PKHUD
|
||||||
|
|
||||||
class DkbmController: UIViewController, WKScriptMessageHandler {
|
class DkbmController: UIViewController, WKScriptMessageHandlerWithReply {
|
||||||
|
|
||||||
private var webView: WKWebView!
|
private var webView: WKWebView!
|
||||||
private var captchaAdded = false
|
private var captchaAdded = false
|
||||||
|
|
||||||
var onDone: ((String) -> Void)?
|
var onDone: ((String) -> Void)?
|
||||||
|
var checkSource: OsagoCheckSource?
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
@ -18,7 +19,9 @@ class DkbmController: UIViewController, WKScriptMessageHandler {
|
|||||||
let contentController = WKUserContentController()
|
let contentController = WKUserContentController()
|
||||||
let script = WKUserScript(source: js!, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
|
let script = WKUserScript(source: js!, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
|
||||||
contentController.addUserScript(script)
|
contentController.addUserScript(script)
|
||||||
contentController.add(self, name: "dkbmHandler")
|
if #available(iOS 14.0, *) {
|
||||||
|
contentController.addScriptMessageHandler(self, contentWorld: .page, name: "dkbmHandler")
|
||||||
|
}
|
||||||
config.userContentController = contentController
|
config.userContentController = contentController
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,21 +45,21 @@ class DkbmController: UIViewController, WKScriptMessageHandler {
|
|||||||
|
|
||||||
// MARK: - WKScriptMessageHandler
|
// MARK: - WKScriptMessageHandler
|
||||||
|
|
||||||
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
func userContentController(_ userContentController: WKUserContentController,
|
||||||
guard let msg = message.body as? [String:String] else { return }
|
didReceive message: WKScriptMessage,
|
||||||
print(msg)
|
replyHandler: @escaping (Any?, String?) -> Void) {
|
||||||
|
|
||||||
if let event = msg["event"] {
|
guard let msg = message.body as? [String:String], let checkSource else { return }
|
||||||
if event == "show-challenge" {
|
|
||||||
if self.captchaAdded {
|
if msg.contains(where: { $0.key == "loaded" }) {
|
||||||
HUD.hide()
|
switch checkSource {
|
||||||
self.webView.isHidden = false
|
case .plateNumber(let number):
|
||||||
}
|
replyHandler(["plateNumber": number], nil)
|
||||||
} else if event == "show-checkbox" {
|
case .vin(let number):
|
||||||
self.captchaAdded = true
|
replyHandler(["vin", number], nil)
|
||||||
}
|
}
|
||||||
} else if let token = msg["token"] {
|
} else if let urlString = msg["url"], let url = URL(string: urlString) {
|
||||||
self.onDone?(token)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,25 +42,14 @@ class OsagoAddController: FormViewController {
|
|||||||
|
|
||||||
form +++ Section()
|
form +++ Section()
|
||||||
<<< ButtonRow() { $0.title = NSLocalizedString("Check", comment: "verb") }.onCellSelection { _, _ in
|
<<< ButtonRow() { $0.title = NSLocalizedString("Check", comment: "verb") }.onCellSelection { _, _ in
|
||||||
// HUD.show(.progress)
|
guard let source = (self.form.rowBy(tag: "SourcePicker") as? PickerInlineRow<OsagoCheckSource>)?.value,
|
||||||
// Api.checkOsago(number: "Н133РО161", vin: nil, date: Date(), token: "")
|
let date = (self.form.rowBy(tag: "date") as? DateTimeInlineRow)?.value
|
||||||
// .observeOn(MainScheduler.instance)
|
else { return }
|
||||||
// .subscribe { vehicle in
|
|
||||||
// HUD.hide()
|
|
||||||
// self.onDone?(vehicle)
|
|
||||||
// } onError: { err in
|
|
||||||
// HUD.show(error: err)
|
|
||||||
// }
|
|
||||||
// .disposed(by: self.bag)
|
|
||||||
// return
|
|
||||||
|
|
||||||
|
|
||||||
let controller = DkbmController()
|
let controller = DkbmController()
|
||||||
|
controller.checkSource = source
|
||||||
controller.onDone = { token in
|
controller.onDone = { token in
|
||||||
self.navigationController?.popViewController(animated: true, completion: {
|
self.navigationController?.popViewController(animated: true, completion: {
|
||||||
guard let source = (self.form.rowBy(tag: "SourcePicker") as? PickerInlineRow<OsagoCheckSource>)?.value,
|
|
||||||
let date = (self.form.rowBy(tag: "date") as? DateTimeInlineRow)?.value
|
|
||||||
else { return }
|
|
||||||
|
|
||||||
var number, vin: String?
|
var number, vin: String?
|
||||||
switch source {
|
switch source {
|
||||||
|
|||||||
@ -1,28 +1,37 @@
|
|||||||
const sitekey = '6Lf2uycUAAAAALo3u8D10FqNuSpUvUXlfP7BzHOk';
|
//const sitekey = '6Lf2uycUAAAAALo3u8D10FqNuSpUvUXlfP7BzHOk';
|
||||||
|
|
||||||
let verifyCallback = (response) => {
|
let verifyCallback = (response) => {
|
||||||
console.log('verifyCallback: ', response);
|
console.log('verifyCallback: ', response);
|
||||||
window.webkit.messageHandlers.dkbmHandler.postMessage({ token: response });
|
window.webkit.messageHandlers.dkbmHandler.postMessage({ token: response });
|
||||||
};
|
};
|
||||||
|
|
||||||
window.addEventListener('load', (event) => {
|
var timerId;
|
||||||
|
|
||||||
|
function getImages() {
|
||||||
|
let nodes = document.querySelectorAll(".policies-tbl img");
|
||||||
|
let urls = Array(...nodes).map(img => img.src);
|
||||||
|
if(urls.length > 1) {
|
||||||
|
window.webkit.messageHandlers.dkbmHandler.postMessage({ "url": urls[1] });
|
||||||
|
clearInterval(timerId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
timerId = setInterval(getImages, 1000);
|
||||||
|
|
||||||
|
window.addEventListener('load', async (event) => {
|
||||||
if(window.top == window.self) {
|
if(window.top == window.self) {
|
||||||
let meta = document.createElement('meta'); meta
|
|
||||||
meta.setAttribute( 'name', 'viewport' );
|
let { plateNumber, vin } = await window.webkit.messageHandlers.dkbmHandler.postMessage({ "loaded": "true" });
|
||||||
meta.setAttribute( 'content', 'width = device-width' );
|
switchTab('tsBlock');
|
||||||
document.getElementsByTagName('head')[0].appendChild(meta);
|
|
||||||
|
|
||||||
document.body.innerHTML = '';
|
if(plateNumber) {
|
||||||
window.webkit.messageHandlers.dkbmHandler.postMessage({ event: 'show-checkbox' });
|
let licencePlateInput = document.getElementById('licensePlate');
|
||||||
grecaptcha.render(document.body, {
|
licencePlateInput.value = plateNumber;
|
||||||
'sitekey' : sitekey,
|
}
|
||||||
'callback' : verifyCallback
|
|
||||||
});
|
if(vin) {
|
||||||
} else {
|
let vinInput = document.getElementById('vin');
|
||||||
let checkbox = document.getElementById('recaptcha-anchor');
|
vinInput.value = vin;
|
||||||
if(checkbox) {
|
|
||||||
checkbox.click();
|
|
||||||
window.webkit.messageHandlers.dkbmHandler.postMessage({ event: 'show-challenge', location: location.href });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user