1

請求ロジックを実装する必要があります。いくつかのリダイレクトを行ってから、新しいウィンドウで新しいフレームを開きます。これが Web ブラウザーでの動作です。

WKWebViewで課金枠を表示しています。新しいフレーム (navigationAction.targetFrame.isNil) を開こうとする瞬間を捉え、webView に新しいリクエストをロードするように依頼します。新しいフレームが読み込まれていますが、一部のリダイレクトが行われず、課金でエラーが表示されます。セッションが失われたようです。

私は別の方法を試しました: 新しい webView に新しいリクエストをロードします。webView を初期化するとき、次の記事に従って、前のものから processPull を渡します: https://github.com/ShingoFukuyama/WKWebViewTips#cookie-sharing-between-multiple-wkwebviews問題は解決しませんでした。

lazy var webView: WKWebView = { [unowned self] in
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    preferences.javaScriptCanOpenWindowsAutomatically = true

    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences

    let webView = WKWebView(frame: CGRect.zero, configuration: configuration)
    webView.navigationDelegate = self
    webView.UIDelegate = self
    webView.estimatedProgress
    webView.scrollView.backgroundColor = UIColor.binomoDarkGrey()
    self.view.addSubview(webView)
    webView.snp_makeConstraints { [unowned self] (make) in
        make.edges.equalTo(self.view)
    }

    return webView
}()

// MARK: WKNavigationDelegate

func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
    if navigationAction.targetFrame.isNil {
        decisionHandler(.Cancel)
        webView.loadRequest(navigationAction.request)
    } else {
        decisionHandler(.Allow)
    }
}
4

1 に答える 1