Я изучаю, можно ли встроить Apple Pay JS / Web Payments API в 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, но также отображается сообщение об ошибке для неподдерживаемого устройства (см. Ниже), и кнопку нельзя нажать.
Я предположил, что это означает отсутствие поддержки в данном контексте. Я снова попытался использовать 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, поэтому это может быть проблема с реализацией.
Спасибо!