Native代码保存数据,HTML页面读取数据

用户可在Native代码或者HTML页面中使用NSUserDefaults类来保存数据,并在另一侧获取

页面保存数据native代码获取

JS Code

在HTML页面中调用如下代码实现数据的保存

function SetUserDefault(key, value)

{

if (typeof value != 'undefined' && typeof key === "string")

{

var UserDefaultsClass = plus.ios.importClass("NSUserDefaults");

var standardUserDefaults = UserDefaultsClass.standardUserDefaults();

plus.ios.invoke(standardUserDefaults, "setObject:forKey:", value, key);

plus.ios.invoke(standardUserDefaults,"synchronize");

}

}

Objective-c Code

在native代码中调用如下方法,获取在HTML页面中保存的数据

NSUserDefaults* pDefDefaults = [NSUserDefaults standardUserDefaults];

if (pDefDefaults) {

NSString* pString = [pDefDefaults objectForKey:@"Input Your Key"];

}

Native保存数据,页面获取数据

JS Code

在HTML页面中调用如下方法,实现读取Native保存的数据

function getUserDefault(key)

{

if(typeof key != 'undefined' && typeof key === "string")

{

var UserDefaultsClass = plus.ios.importClass("NSUserDefaults");

var standardUserDefaults = UserDefaultsClass.standardUserDefaults();

return plus.ios.invoke(standardUserDefaults, "objectForKey:", key);

}

return null;

}

Objective-c Code

在Native代码中调用如下方法,实现保存数据

NSUserDefaults* pDefDefaults = [NSUserDefaults standardUserDefaults];

if (pDefDefaults) {

[pDefDefaults setObject:@"Input Your Value" forKey:@"Input Your Key"];

}

Native代码调用当前运行应用的指定HTML页面内的JS方法

开发者可通过以下方法,在Native层找到需要交互的Webview对象,并触发该页面中的JS方法

根据webview的ID找到对应的HTML页面,并执行页面的JS方法

PDRCoreAppFrame* pFrame = [[[[[PDRCore Instance] appManager] activeApp] appWindow] getFrameByName:@"plus/audio.html"];

if (pFrame)

{

// 找到指定的页面并调用stringByEvaluatingJavaScriptFromString方法调用该html页面的JS方法

[pFrame stringByEvaluatingJavaScriptFromString:@"InputJSFunctionNameInHtmlPage()"];

}

找到应用的主页面,并调用HTML中的JS方法

PDRCoreAppFrame* pMainFrame =[[[[PDRCore Instance] appManager] activeApp] mainFrame] ;

if (pMainFrame) {

[pMainFrame stringByEvaluatingJavaScriptFromString:@"InputJSFunctionNameInHtmlPage()"];

}

HTML 页面调用原生方法

开发者可使用NativeJS调用已经写好的原生类的方法,也可以用NativeJS发送一个消息,由原生代码接收这个消息并处理

//IOS NJS 代码发送消息到原生层的示例

var notiClass = plus.ios.importClass("NSNotificationCenter");

notiClass.defaultCenter().postNotificationNameobject("CloseWebAPP",null);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐