javascript函数访问ios原生功能

时间:2012-09-07 05:49:56

标签: javascript ios cordova

这种情况:像PhoneGap一样,我想定义并调用一个不存在的JavaScript函数,它需要访问ios功能。如,

javascript代码:

function onClickButton(){
    toModule(true, true, "title1", 1);
}

我想通过函数toModule访问iOS功能。但是怎么样?你能告诉我吗?

PS:我知道一个解决方案JS-> iOS是使用UIWebViewDelegate的

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

但我不想要那个解决方案,只需处理JS函数toModule(...)

2 个答案:

答案 0 :(得分:0)

从javascript(phonegap)您无法直接访问ios本机代码,而是应该使用或开发可以建立此连接的phonegap插件。

您可以在Plugin Development Guide

找到更多信息

答案 1 :(得分:0)

这很简单 步骤1)在项目中包含cordova.js文件 Step2)在你的javascript文件和你的javascript文件中包含cordova.js添加以下代码

    cordova.exec(
                              function successCallback() {

                              }, 
function errorHandler(err) {
                              },
'Login', 'callLogin', [param]);
                              }

这里Login是本机类的名称,callLogin是Login类中的函数,param是要发送到本机文件的参数数组

Step3)转到config.xml和这个

<feature name="Login">
        <param name="ios-package" value="Login"/>
    </feature>

Step4)

- (void)Login:(CDVInvokedUrlCommand*)command
    { // this is the native function, which is being called from javascript file, do your work here
     }

Step5)如果你想将任何数据从本地发送回js文件,你需要编写以下代码。

NSString * jsCallBack = [NSString stringWithFormat:@“callJsFunction(parameters)];    [self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];

callJsFunction()是您要从本机调用的js函数的名称。(您只能发送字符串)

Step6)要从native获取值到js,你需要在js文件中编写callJsFunction(参数)。在js文件中写下以下函数

callJsFunction(参数)   {    }

这是从本机类的js和js调用本机函数的完整过程。