Как автоматически заполнить данные кредитной / дебетовой карты в поле ввода в amazon.in в wkwebview в приложении ios? - PullRequest
2 голосов
/ 18 октября 2019

Я разрабатываю приложение для iOS, в котором есть веб-просмотр (wkwebview), в wkwebview будет загружен веб-сайт, например amazon.in У меня есть данные кредитной / дебетовой карты, такие как номер карты, срок действия и т. Д., Которые надежно хранятся вмое приложение для iOS, я хочу ввести данные кредитной / дебетовой карты в поля ввода amazon.in на странице оплаты.

Браузер Safari по умолчанию в iPhone может автоматически заполнять кредитные / дебетовые карты, если они сохранены.

Пожалуйста, дайте мне знать решение для того же.

Это страница оплаты Amazon:

Screenshot amazon payment page

class ViewController: UIViewController {
let scriptSource = "document.getElementsByName('addCreditCardNumber')[0].value = '1111 1111 1111 1111'"
    var webConfig: WKWebViewConfiguration {
        get {
            let webCfg = WKWebViewConfiguration()
            let controller = WKUserContentController()
            let pre = WKPreferences()
            pre.javaScriptEnabled = true
            webCfg.preferences = pre
            let script = WKUserScript(source: scriptSource, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
            controller.addUserScript(script)
            webCfg.userContentController = controller
            return webCfg;
        }
    }
lazy var webView: WKWebView = {
       let webView = WKWebView(frame: .zero, configuration: self.webConfig)
       webView.translatesAutoresizingMaskIntoConstraints = false
       return webView
   }()

override func viewDidLoad() {
    super.viewDidLoad()
    self.addWKWebView()
}
private func addWKWebView(){
    self.view.addSubview(webView)
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
    webView.load(URLRequest(url: URL(string: "https://www.amazon.in")!))
    webView.uiDelegate = self
    webView.navigationDelegate = self
   }}

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Вот что я использовал для добавления моего сообщения в webView:

   public static func appendNewMessage(chatListWebView : UIWebView,  appendTemplet : String) {
        do {
            let temp = "document.getElementById('message_div').innerHTML +=\"" + appendTemplet + "\""
            print(temp)
            chatListWebView.stringByEvaluatingJavaScript(from: "document.getElementById('message_div').innerHTML +=\"" + appendTemplet + "\"");
    } catch  {
//    JLog.error(appendTemplet);
//    ex.printStackTrace();
    }
    }

Вы можете обновить его в соответствии с вашей ситуацией. Извините, но у меня нет времени на его редактирование

Надеюсь, это поможет вам!

0 голосов
/ 18 октября 2019

Вы можете добавить пользовательский сценарий для страницы с WKUserScript -объектом. В нем вы можете использовать стандартный JavaScript, такой как document.getElementById("creditcard").defaultValue = "12345";

. Этот урок должен дать вам представление об этом: https://medium.com/capital-one-tech/javascript-manipulation-on-ios-using-webkit-2b1115e7e405. Для получения дополнительной информации о WKUserScript ознакомьтесь с официальной документацией (https://developer.apple.com/documentation/webkit/wkuserscript)

...