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);
22 个评论
要回复文章请先登录或注册
shimeifang
shimeifang
3***@qq.com
我是飞鱼
邹胜林
小孔1993
无名2015
骁骑 (作者)
小孔1993
1***@qq.com