На iPhone X просмотр веб-файлов дает проблему - PullRequest
0 голосов
/ 08 декабря 2018

Я создал приложение, которое отображает веб-сайт с помощью 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)
        }
    }
}
...