骁骑
骁骑
  • 发布:2015-11-24 15:48
  • 更新:2020-08-25 16:48
  • 阅读:11540

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

分类:5+ SDK

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);

3 关注 分享
2***@qq.com z***@qq.com shimeifang

要回复文章请先登录注册

shimeifang

shimeifang

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

shimeifang

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

3***@qq.com

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

我是飞鱼

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

邹胜林

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

小孔1993

回复 无名2015 :
使用sp
2016-10-07 20:06
无名2015

无名2015

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

骁骑 (作者)

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

小孔1993

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

1***@qq.com

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