在 Android 中我可以使用这种方法实现它。谁能告诉我如何在 iOS 中使用 UIWebView
或 WKWebView
实现此目的?
@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 中。
最佳答案
在 iOS 上,您通常使用 WKScriptMessageHandler
处理此问题:
https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?preferredLanguage=occ
本质上,你使用WKWebView,然后在JavaScript中调用这个方法:
window.webkit.messageHandlers.notification.postMessage( "message" );
然后在您的应用程序代码中,实现一个 WKScriptMessageHandler
,您将其挂接到您的 Web View 中,并使用它来接收消息:
func userContentController(
userContentController: WKUserContentController,
didReceiveScriptMessage message: WKScriptMessage) {
// do stuff
}
您可以在 NSHipster 上详细了解它: http://nshipster.com/wkwebkit/
关于javascript - 如何从服务器端 JavaScript 获取值并将它们存储在 Swift 的 plist 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485371/