【问题标题】:javascript function access ios native featuresjavascript函数访问ios原生特性
【发布时间】:2012-09-07 05:49:55
【问题描述】:

这种情况:和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(...)

【问题讨论】:

    标签: javascript ios cordova


    【解决方案1】:

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

    您可以在Plugin Development Guide找到更多信息

    【讨论】:

    • 那么除了使用 UIWebViewDelegate 之外,iOS 是如何处理 Javascript 函数调用的呢?
    • 是的 UIWebViewDelegate 但是 phonegap 将在内部处理这个过程,所以你不应该为它烦恼。
    【解决方案2】:

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

        cordova.exec(
                                  function successCallback() {
    
                                  }, 
    function errorHandler(err) {
                                  },
    'Login', 'callLogin', [param]);
                                  }
    

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

    Step3) 转到 config.xml 和这个

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

    第四步)

    - (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()是你想从native调用的js函数的名字。(你只能发送字符串)

    Step6) 要将值从本机获取到 js,您需要在 js 文件中编写 callJsFunction(parameters)。在js文件中写入下面的函数

    callJsFunction(参数) { }

    这是从js调用native函数和从native class调用js的完整过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多