IOS平台使用SDK集成,Native代码和HTML页面进行交互的方法

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

\n

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

页面保存数据native代码获取

\n

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");
}
}
\n

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

 NSUserDefaults* pDefDefaults = [NSUserDefaults standardUserDefaults];
if (pDefDefaults) {
NSString* pString = [pDefDefaults objectForKey:@"Input Your Key"];
}
\n

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

\n

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;
}
\n

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

   NSUserDefaults* pDefDefaults = [NSUserDefaults standardUserDefaults];
if (pDefDefaults) {
[pDefDefaults setObject:@"Input Your Value" forKey:@"Input Your Key"];
}
\n

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

\n

开发者可通过以下方法,在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()"];
}
\n

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

     PDRCoreAppFrame* pMainFrame =[[[[PDRCore Instance] appManager] activeApp] mainFrame] ;
if (pMainFrame) {

[pMainFrame stringByEvaluatingJavaScriptFromString:@"InputJSFunctionNameInHtmlPage()"];
}
\n

HTML 页面调用原生方法

\n

开发者可使用NativeJS调用已经写好的原生类的方法,也可以用NativeJS发送一个消息,由原生代码接收这个消息并处理
//IOS NJS 代码发送消息到原生层的示例
var notiClass = plus.ios.importClass("NSNotificationCenter");
notiClass.defaultCenter().postNotificationNameobject("CloseWebAPP",null);


3 分享 关注
2546863989@qq.com zhouhonghe@qq.com shimeifang
352565330@qq.com

352565330@qq.com

//IOS NJS 代码发送消息到原生层的示例
var notiClass = plus.ios.importClass("NSNotificationCenter");
notiClass.defaultCenter().postNotificationNameobject("CloseWebAPP",null);

这个通知怎么附带参数传给原生让原生获取到附带的参数
0 赞 2018-03-30 10:23
shimeifang

shimeifang

都没有这个方法evaluatingJavaScriptAndFetchCommand,原生中加载了很多个页面怎么获取JS,促发JS方法?
0 赞 2017-10-18 13:34
shimeifang

shimeifang

是在原生的界面中导入一个头文件#import "PDRCoreAppFrame.h"就可以了吗?麻烦说一下咯,谢谢
0 赞 2017-10-11 16:06
3140905638@qq.com

3140905638@qq.com

android版的http://ask.dcloud.net.cn/question/23698
0 赞 2017-06-13 09:18
我是飞鱼

我是飞鱼

android 有没有demo ,谁发下地址
0 赞 2016-11-07 09:33
邹胜林

邹胜林

请问怎么获取android传过来的值呢
0 赞 2016-10-19 09:50
小孔1993

小孔1993 回复 无名2015

使用sp
0 赞 2016-10-07 20:06
无名2015

无名2015

请问Android平台如何编写?谢谢
0 赞 2016-09-29 09:15
SDK_骁骑

SDK_骁骑 回复 小孔1993

Input Your Key是随便写什么作为key值
0 赞 2016-09-28 17:24
小孔1993

小孔1993

Input Your Key"是设备的UUID吗
0 赞 2016-09-28 12:21
1666154330@qq.com

1666154330@qq.com

请问Android平台如何编写?谢谢
0 赞 2016-07-19 11:03
Costword

Costword

最起码也要写下需要导入那些头文件吧PDRcoreappframe实例化之后为什么后面会跟那么多方法呀
0 赞 2016-03-17 11:18

要回复文章请先登录注册