Instead of safari you can use WKWebview
like below.
Create a property of WKWebView
private var webView: WKWebView!
Initialise webview as follow in viewDidLoad
method...
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)
Implement the following delegate method of WKWebView
.
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
}
}
})
}
Note: You need to ask your backend team to post data in webview using tag with id response_success, if response is success & response_fail, if response is failed.(You can change it as per your requirements)