首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文本从SafariViewController快速传输到我们的应用程序?

如何将文本从SafariViewController快速传输到我们的应用程序?
EN

Stack Overflow用户
提问于 2019-12-05 14:54:58
回答 2查看 769关注 0票数 0

在我的应用程序中,我们正在使用分段支付,没有适当的软件开发工具包集成,然后我们从支持的网址,并在SafariViewController中打开它。

当用户成功完成付款,我们需要带给用户的主页,如何知道我们的状态是从SafariViewController的成功。

我在SafariViewController上得到了后端的回复,在webview页面上是这样的:

EN

回答 2

Stack Overflow用户

发布于 2019-12-05 15:11:32

你可以像下面这样使用WKWebview而不是safari。

创建WKWebView的属性

代码语言:javascript
复制
private var webView: WKWebView!

viewDidLoad方法中初始化webview,如下所示...

代码语言:javascript
复制
let jScript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let wkUScript = WKUserScript(source: jScript, injectionTime: .atDocumentStart, forMainFrameOnly: true)
let wkUController = WKUserContentController()
wkUController.addUserScript(wkUScript)

let webConfiguration = WKWebViewConfiguration()
webConfiguration.userContentController = wkUController

webView = WKWebView(frame: view.bounds, configuration: webConfiguration)
webView.navigationDelegate = self
view.addSubview(webView)
let url = URL(string: "https://...") //set url to load in webview
let req = URLRequest(url: url)
webView.load(req)

实现WKWebView的以下委托方法。

代码语言:javascript
复制
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.getElementById('response_success').textContent", completionHandler: { (html, error) in

        if let content = html as? String {
            print(content)

            if content.lowercased().contains("ok") { //here you can place the status coming from server for comparison

               //handle success response
            }
        }
    })
    webView.evaluateJavaScript("document.getElementById('response_fail').textContent", completionHandler: { (html, error) in

        if let content = html as? String {
            print(content)

            if content.lowercased().contains("fail") { //here you can place the status coming from server for comparison

               //handle fail response
            }
        }
    })
}

注意:如果响应成功,您需要要求您的后台团队使用id为response_success,的标签在webview中发布数据;如果响应失败,则使用response_fail,。(您可以根据您的要求进行更改)

票数 -1
EN

Stack Overflow用户

发布于 2019-12-05 18:59:12

这是任何人都需要使用的代码。

对于加载URL:

代码语言:javascript
复制
 let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        webView.navigationDelegate = self
        view = webView
        let myURL = URL(string: "YOUR_URL")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)

处理URL的委托方法:

代码语言:javascript
复制
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

        if let url = webView.url?.absoluteString{
            if url.contains("success.php"){
                print("SUCCESS CASE")
            }else if url.contains("fail.php"){
                print("FAILURE CASE")
            }
        }
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59189771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档