Error Domain=WebKitErrorDomain Code=102 “Frame load interrupted”

前端 未结 1 989
忘掉有多难
忘掉有多难 2020-12-19 09:10

Getting an error while showing pdf in WebView

\"Error Domain=WebKitErrorDomain Code=102 \"Frame load interrupted\"

But with the same code image is populating

相关标签:
1条回答
  • 2020-12-19 09:27

    Thanks for contributing :)

    Finally after spending hours on this , Here i found the solution for this common Webview "frame load interrupted" issue:

    • Download the file in bytes form
    • Store it in the Local Storage
    • Load the file in Web view with the local path and it works

    Try the below code for the above steps

    //Method to Show Document In Web View

        func methodToShowDocumentInWebView(strUrl : String, fileName :  String, controller: UIViewController)  {
    
     //Get Request to download in bytes
           Service.shared()?.callAPI(withURLWithoutHandlingAndLoaderAndHttpStatusCode: strUrl, andLoaderenabled: true, method: "GET", parameters: [:], withController: self, completion: { (data, error, code) in
    
              if  let dataFile = data {
    
                 let (success , payslipPath) = self.methodToWriteFileLocally(data: dataFile as! Data, fileName: fileName, directory: "Leave")
                 if success {
                    webviewInstance.loadRequest(NSURLRequest(URL: NSURL(string: payslipPath)!))
                 }else{
                    //Handle Error case
                 }
              }
           })
        }
    

    //Method to Store data Locally

    func methodToWriteFileLocally(data : Data, fileName: String, directory : String) -> (success :Bool ,path :URL?) {
    
       let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
       let fileURL = documentsURL?.appendingPathComponent(directory)
       let payslipPath = fileURL?.appendingPathComponent(fileName)
    
       if !FileManager.default.fileExists(atPath: payslipPath!.path) {
          do{
             try FileManager.default.createDirectory(atPath: fileURL!.path, withIntermediateDirectories: true, attributes: nil)
          }
          catch{
             //Handle Catch
             return (false, nil)
    
          }
          let writeSuccess =  (data as AnyObject).write(to: payslipPath!, atomically: true)
          return (writeSuccess, payslipPath!)
       }
       else
       {
          let writeSuccess =  (data as AnyObject).write(to: payslipPath!, atomically: true)
          return (writeSuccess, payslipPath!)
    
       }
    }
    
    0 讨论(0)
提交回复
热议问题