2017-08-03 30 views
0

在Android中,我可以使用這種方法來實現它。任何人都可以告訴我如何使用UIWebViewWKWebView在iOS中實現此目的?如何從服務器端JavaScript獲取值並將它們存儲在Swift中的plist中?

@JavascriptInterface 
    public boolean RememberMe(String UserData) { 
     String str = UserData.replace("\\", ""); 
     str = str.substring(1, str.length() - 1); 

     try { 
      clsDBHelper DB = new clsDBHelper(MainActivity.this); 
      JSONArray StoreData = DB.GetQueryNew("Select * from UserInfo", null); 
      if (StoreData == null) { 
       JSONArray Obj = new JSONArray(str); 
       Integer TransID = Obj.getJSONObject(0).getInt("TransID"); 
       Integer OPID = Obj.getJSONObject(0).getInt("OPID"); 
       Integer ProviderID = Obj.getJSONObject(0).getInt("ProviderID"); 
       Integer CustomerID = Obj.getJSONObject(0).getInt("CustomerID"); 
       Integer CompID = Obj.getJSONObject(0).getInt("CompID"); 
       String UserID = Obj.getJSONObject(0).getString("UserID"); 
       String Password = Obj.getJSONObject(0).getString("Password"); 
       String RegMoblileNo = Obj.getJSONObject(0).getString("RegMoblileNo"); 
       String RegEmialID = Obj.getJSONObject(0).getString("RegEmialID"); 
       Integer Verifyflag = (Obj.getJSONObject(0).getBoolean("Verifyflag") == true ? 1 : 0); 
       Integer IsActive = (Obj.getJSONObject(0).getBoolean("IsActive") == true ? 1 : 0); 
       String OTP = Obj.getJSONObject(0).getString("OTP"); 
       String OTPTimeStamp = Obj.getJSONObject(0).getString("OTPTimeStamp"); 
       String OperatorID = Obj.getJSONObject(0).getString("OperatorID"); 
       DB.ExeNonScalerQuery("INSERT INTO UserInfo(TransID,OPID,ProviderID,CustomerID,CompID,UserID,Password,RegMoblileNo,RegEmialID,Verifyflag,IsActive,OTP,OTPTimeStamp,OperatorID)values(" 
         + TransID + "," + OPID + "," + ProviderID + "," + CustomerID + "," + CompID + ",'" + UserID + "','" + Password + "','" + RegMoblileNo + "','" + RegEmialID + "'," + Verifyflag + "," + IsActive + ",'" + OTP + "','" + OTPTimeStamp + "','" + OperatorID + "')"); 
      } 
      DB.CloseDB(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      clsDBHelper DB = new clsDBHelper(MainActivity.this); 
      DB.GetQueryNew("Delete from UserInfo", null); 
      DB.CloseDB(); 
     } 
     return true; 
    } 

當我登錄到應用程序,在JavaScript中RememberMe功能送我一個字符串,我需要在plist中保存。

回答

1

在iOS上,你通常WKScriptMessageHandler處理這個問題:從本質上講 https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?preferredLanguage=occ

,您使用WKWebView,然後調用JavaScript的這個方法:

window.webkit.messageHandlers.notification.postMessage("message"); 

,然後在應用程序代碼,實現WKScriptMessageHandler ,然後使用它接收消息:

func userContentController( 
    userContentController: WKUserContentController, 
    didReceiveScriptMessage message: WKScriptMessage) { 
    // do stuff 
} 

Yo你可以在NSHipster上詳細瞭解它: http://nshipster.com/wkwebkit/

+0

FUNC webViewDidFinishLoad(web視圖:UIWebView中)做{ WebView.stringByEvaluatingJavaScript(來源: 「LoginByMobileApp()」) }如何使用WKWebView –

+1

它可能更好地問來實現它作爲一個問題而不是對這個答案的評論,但是......像這樣的東西看起來像你想要去的方向:https://stackoverflow.com/questions/25504481/wkwebview-content-loaded-function永遠不要叫 –

0

好像你是從那個「remmeber」方法獲取數組,所以將第一個元素保存在var中,然後測試它的類型。如果它的JSON然後檢索數據,你的NSDictionary

+0

Plz舉一些例子 –

+0

請檢查[這](https://stackoverflow.com/questions/36494529/convert-a-simple-string-to-json-string-in-swift)出來轉換爲json –

相關問題