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