ios - WKWebView 中的 Apple Pay JS

标签 ios swift wkwebview applepay sfsafariviewcontroller

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

我整理了一个非常基本的 ViewController.swift 示例,如下所示,利用了 Apple Pay on the Web Demo

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

谢谢!

最佳答案

已编辑

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

关于ios - WKWebView 中的 Apple Pay JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744893/

相关文章:

ios - resignFirstResponder 不在模态视图 Controller 中工作

ios - 在 TableView 中删除或重新排序单元格时的动画

ios - Xcode 8 中隐式解包的可选分配

ios - 在 WKWebView 之间共享/重新加载 localStorage、IndexedDB、cookie

ios - 无法更改 WKWebView 中 UIScrollview 的内容大小

ios - 如何使表格 View 在快速重新加载数据后显示特定行?

ios - 在 iOS 5 和 iOS 6 中缩放 UIWebView 以适应全屏

ios - 无法获取不可变 ID

swift - MLMediaLibrary - 显示照片库 -Swift 代码错误 - macOS

ios - WKWebView中如何实现 "Are you sure you want to submit the form again"