Я создал приложение, которое отображает веб-сайт с помощью WKWebView. Он использует куки для входа на веб-сайт. Когда я нажимаю на какой-либо элемент боковой панели навигации по веб-сайту, он выводит меня на экран входа в систему, который подходит для всехна других iPhone только эта проблема возникает на iPhone X.Может быть проблема с файлами cookie, но я не знаю, в чем проблема. Это приложение работает нормально на всех других iPhone, но оно выдает странное поведение на iPhone x
class WebViewController: UIViewController, WKNavigationDelegate,WKUIDelegate {
@IBOutlet weak var notInernetImgaeView: UIImageView!
@IBOutlet weak var noInternetButton: UIButton!
private var webView: WKWebView!
private var refController:UIRefreshControl = UIRefreshControl()
private var activityIndicator: UIActivityIndicatorView!
let network: NetworkManager = NetworkManager.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
loadUrl()
}
private func loadUrl(){
activityIndicator = UIActivityIndicatorView()
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
let statusBarHeight = UIApplication.shared.statusBarFrame.height
webView=WKWebView(frame: CGRect.init(x: 0, y: statusBarHeight, width: view.bounds.maxX, height: view.bounds.maxY))
self.webView.navigationDelegate=self
self.webView.uiDelegate=self
self.view.addSubview(webView)
self.view.addSubview(activityIndicator)
refController.bounds = CGRect.init(x: 0.0, y: 50.0, width: refController.bounds.size.width, height: refController.bounds.size.height)
refController.addTarget(self, action: #selector(self.mymethodforref(refresh:)), for: .valueChanged)
refController.attributedTitle = NSAttributedString(string: "Pull to refresh")
webView.scrollView.addSubview(refController)
let value = ConfigManager.getInstance().getUrl()
let cookie=ConfigManager.getInstance().getCookie()
var urls:String?
if StaticData.URL != nil {
urls=StaticData.URL
}else{
urls="https://helpers.ie/dashboard"
}
var url=URLRequest(url: URL(string: urls!)!)
url.addValue("ci_session="+cookie, forHTTPHeaderField: "Cookie")
activityIndicator.startAnimating()
self.webView.load(url)
}
@objc func mymethodforref(refresh:UIRefreshControl){
webView.reload()
refController.endRefreshing()
}
func webView(_ webView: WKWebView,
didFinish navigation: WKNavigation!) {
activityIndicator.stopAnimating()
}
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
print(error)
}
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
let nserr = error as NSError
print(nserr.code)
if nserr.code == -1001 {
self.webView.isHidden=true
self.noInternetButton.isHidden=false
self.notInernetImgaeView.isHidden=false
self.activityIndicator.stopAnimating()
}
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void){
if (navigationAction.navigationType == WKNavigationType.linkActivated) {
let url=navigationAction.request.url
let str=String(describing:url!)
if str == "https://helpers.ie/user/logout/" || str == "https://helpers.ie/signup" || str == "https://helpers.ie/login"{
ConfigManager.getInstance().removeInfoCookie()
let vc=AppStoryboard.RegisterScreen.viewController(viewControllerClass: LoginViewController.self)
self.present(vc, animated: true, completion: nil)
}
decisionHandler(WKNavigationActionPolicy.allow)
} else {
let url=navigationAction.request.url
decisionHandler(WKNavigationActionPolicy.allow)
}
}
}