2015-02-25 4 views
0

моей главной проблемой является WKWebView .... когда я запускаю свое приложение, оно должно перейти на сайт за сценой и войти в систему, запустив некоторый код из .js-файла, найденного на главной расслоение.WKWebView не работает на устройстве

required init(coder aDecoder: NSCoder) { 

// Load username and password from NSUserDefults 

     self.staffID = defaults.objectForKey("UserName") as String 
     self.pass = defaults.objectForKey("PassWord") as String 

    // locate file from main bundle 
     let populateLoginURL = NSBundle.mainBundle().pathForResource("login", ofType: "js")  
// edit username and password 
     var PassEdited = pass + "'" 
     println(pass) 
     var PassJs = "document.getElementsByName('password')[0].value = '" + PassEdited 
     var usernameEdited = "'" + staffID + "'" 
     println(staffID) 
     var userNameJS = "document.getElementsByName('username')[0].value = " + usernameEdited 
    // submit fuction will validate username and password on webpage 
     let submit = "submitButton()" 
    //combine the java code in one line 
     let javaCode = userNameJS + "; " + PassJs + "; " + submit 
    // write java code to file in main bundle which is empty 
     javaCode.writeToFile(populateLoginURL!, atomically: true, encoding: NSUTF8StringEncoding, error: nil) 
    //configure webView 
     self.webView = WKWebView(frame: CGRectZero) 
     let configuration = WKWebViewConfiguration() 
    // load javacode to inject from file 
     let populateLoginJS = String(contentsOfFile:populateLoginURL!, encoding:NSUTF8StringEncoding, error: nil) 
     let populateLoginScript = WKUserScript(source: populateLoginJS!, injectionTime: .AtDocumentEnd, forMainFrameOnly: true) 
// add configuration to webview 
     configuration.userContentController.addUserScript(populateLoginScript) 

         configuration.preferences.javaScriptCanOpenWindowsAutomatically = false 
     self.webView = WKWebView(frame: CGRectZero, configuration:  configuration) 

    println(populateLoginJS) 
    super.init(coder: aDecoder) 
    } 

override func viewDidLoad() { 
//set navigation delegate of web view and navigate to specified url 
    webView.navigationDelegate = self 
    let URL = NSURL(string: "https://ifly.etihad.ae") 
    let request = NSURLRequest(URL:URL!) 
    webView.loadRequest(request) 
    } 

все это работает без сбоев на симуляторе IOS.

с этим сказанным я заметил последний Println (populateLoginJs) обычно печатает содержание файла .js однако при запуске на устройстве печатает дополнительные «»

так как написание в JS файл не является работы или загрузка в JS файл не работает Вот моя догадка

ребят какие-либо идеи или информация Willl быть высоко оценены

+0

Почему вы объявляя переменные внутри требуемой инициализации? –

+0

ребятам, мне удалось запустить код, однако я обнаружил, что проблема с writeToFile не работает на устройстве. – OverD

ответ

0

мне удалось решить эту проблему, я узнал запись в файл не была компиляции на устройство. после контакта с поддержкой Apple, они сказали, что это ошибка, о которой они знают.

Os путь я обработки вопрос сейчас проверяет, что URL-WebView на, если так, то webView.evaluateJavaScript

Смежные вопросы