Apple Pay JS внутри WKWebView - PullRequest
       33

Apple Pay JS внутри WKWebView

0 голосов
/ 18 февраля 2019

Я смотрю, возможно ли встроить API Apple Pay JS / Web Payments в WKWebView.У нас есть веб-приложение, встроенное в WKWebView, и мы хотели бы реализовать Apple Pay без моста через JavaScript.

Я собрал очень простой ViewController.swift пример, как показано ниже, используя Apple Pay в Интернете Демонстрация

import UIKit
import WebKit


class ViewController: UIViewController, WKUIDelegate {

    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = URL(string:"https://applepaydemo.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

Кнопка Apple Pay отображается, но также отображается сообщение об ошибке для неподдерживаемого устройства (см. Ниже), и кнопка может «t быть нажатым.

enter image description here

Я предположил, что это означало, что в этом контексте не было никакой поддержки.Я попытался снова, используя SFSafariViewController, и кнопка отображается и запускает Apple Pay при нажатии.Короче говоря - все работает отлично.

import UIKit
import SafariServices

class ViewController: UIViewController, SFSafariViewControllerDelegate {
    override func viewDidAppear(_ animated: Bool) {
        let safariVC = SFSafariViewController(url: URL(string:"https://applepaydemo.apple.com")!)
        self.present(safariVC, animated: false, completion: nil)
    }
}

Мне интересно, есть ли проблема с тем, как я реализовал это для WkWebView, или есть ошибка.Может показаться, что либо кнопка появилась, либо кнопка не работает, это ошибка.Очевидно, что на одном уровне он считает, что WkWebView совместим, но не на другом.Кажется вероятным, что об этой ошибке сообщают, но я довольно новичок в Swift, так что это может быть проблема с реализацией.

Спасибо!

1 Ответ

0 голосов
/ 18 февраля 2019

Отредактировано

См .: - https://developer.apple.com/library/archive/ApplePay_Guide/index.html#//apple_ref/doc/uid/TP40014764

Предыдущий ответ

Вам необходимо отключить JavaScript для этогоРабота.(Возможно, по соображениям безопасности, так как оплата производится)

override func loadView() {

        let preferences = WKPreferences()
        preferences.javaScriptEnabled = false
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preferences
       // let webview = WKWebView(frame: .zero, configuration: configuration)
       // let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: configuration)
        webView.uiDelegate = self
        view = webView
    }
...