Swift - 从网络(webview、safari 等)获取响应

Swift - Get response from web (webview, safari, etc)

我想在我的应用程序中打开 url 并进行登录。之后,它会重定向到某个地方并给我一个响应(200 或 500)。 我想得到那个回复。

可能吗?我看到有几个选项:webview、使用 SafariServices 的 safariviewcontroller 甚至 SFAuthenticationSession(但它已被弃用,新的​​是 iOS 12...)

你推荐什么?

最诚挚的问候!

您可以使用 WKWebView 及其委托函数来归档此类行为。

如果您正在使用 UIWebview,请使用 JavaScript 技术在该 Web 视图中加载数据。像这样

    public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if let requestUrl = request.url, requestUrl.absoluteString.hasPrefix("check with your url prefix") {
        let absoluteStr = requestUrl.absoluteString.replacingOccurrences(of: "use to make url", with: "")

        if let absoluteUrl = URL(string: absoluteStr) {
            // do what you want with your url now.
        }
    }
}

UIWebView 的完成和错误委托

    public func webViewDidFinishLoad(_ webView: UIWebView) {

    if !webView.isLoading {
       //webview loading complete
    }
}

public func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
{
    // Call failure callback except for the error of WebKitErrorDomain
    if ((error as NSError).domain != webKitErrorDomain) {
       // delegate error where do you want. 
    }
}