Objective C将数据发送到phonegap并调用javascript函数

Posted

技术标签:

【中文标题】Objective C将数据发送到phonegap并调用javascript函数【英文标题】:Objective C send data to phonegap and call javascript function 【发布时间】:2014-09-15 14:21:47 【问题描述】:

我正在使用 phonegap 开发一个 ios 应用程序。因为需要实现人脸识别,所以这里也使用了原生语言objective-c。

在主故事板中,我有两个视图控制器。一个叫做“FaceRec”,它完全是使用objective-c创建的。人脸识别功能在这里实现。另一个是 phonegap 主视图控制器。它们通过使用标签栏控制器连接。

问题是当用户从标签栏控制器进入 FaceRec 页面并从服务器获得响应时。如果响应为真,我不知道如何将该响应从 FaceRec 发送到 phonegap 主视图控制器。因为它们在不同的视图控制器中,我也不知道如何从objective-c调用javascript函数。

我知道通过使用插件我可以从javascript调用objective-c方法并获得响应,但我想要的是通过不同的视图控制器将数据从objective-c发送到phonegap并调用javascript函数。

有什么想法吗?提前致谢!

这是 index.html 中的代码:

    <script type="text/javascript">

    function login()
    
        $(function()
          
            $.mobile.navigate( "#main",  transition : "slide", info: "info about the #bar hash" );
          );
    

    </script>


 <div id="loginPage" data-role="page" data-theme="b">;
 <div id="main" data-role="page" data-theme="b">

【问题讨论】:

您要查找How to create a cordova plugin。尽管您可以在不制作插件的情况下实现所有内容,但插件框架将帮助您完成您提到的所有项目。 【参考方案1】:

从 Obj-C 调用 Javascript 函数,使用类似:

[self writeJavascript:@"YourJSFunction();"];

您也可以将任何内容作为字符串传递给JS

NSString *js = @"YourJSFunction('";
js = [js stringByAppendingString:yourData];
js = [js stringByAppendingString:@"');"];
[self writeJavascript:js];

yourData 必须是一个字符串。您基本上可以 JSON 序列化几乎任何数组或字典,然后将其传递给您的 javascript 函数。

【讨论】:

问题已解决。首先,我将来自 FaceRec 视图控制器的服务器响应传递给 phonegap,然后我使用 [self.webView stringByEvaluatingJavaScriptFromString:@"login()"];调用javascript函数。感谢您的建议。

以上是关于Objective C将数据发送到phonegap并调用javascript函数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Objective C 创建 JSON 数据并将其发送到服务器

如何从Javascript调用Objective-C方法并将数据发送回iOS中的Javascript?

使用 NSString 变量在 PhoneGap 中从 Objective C 编写 JavaScript

iPhone中Objective C中的字节数据类型

Objective C - 将 EAAccessory 存储到 NSUserDefaults

NSOutputStream 发送旧值 - Objective C