WKWebView中的Apple Pay JS

时间:2019-02-18 10:15:25

标签: ios swift wkwebview applepay sfsafariviewcontroller

我正在研究是否可以在WKWebView中嵌入Apple Pay JS / Web Payments API。我们有一个嵌入在WKWebView中的Web应用程序,我们希望通过JavaScript在没有桥接的情况下实现Apple Pay。

我使用Apple Pay on the Web Demo

整理了一个非常基本的ViewController.swift示例,如下所示
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按钮,但还会显示不支持的设备的错误消息(请参阅下文),并且无法单击该按钮。

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还是很陌生,所以这可能是实现问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

已编辑

引用:-{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
    }

答案 1 :(得分:0)

不幸的是,您只能将ApplePay与SFSafariViewController一起使用;这意味着即使出现ApplePay按钮,交易流程也不会继续进行,因为WkWebview不支持ApplePay。