如何在 ios 中将变量从 javascript 传递到目标 C 和目标 C 到 Javascript

Posted

技术标签:

【中文标题】如何在 ios 中将变量从 javascript 传递到目标 C 和目标 C 到 Javascript【英文标题】:How to pass a variable from javascript to objective C and Objective C to Javasctipt in ios 【发布时间】:2015-01-23 07:42:16 【问题描述】:

我是一名 ios 开发人员,不熟悉 javascript

我想创建 Javascript 到 Objective C 和 Objective C 到 Javascript 之间的通信。

如何在 ios 中将变量从 javascript 传递给 Objective C 和 Objective C 传递给 Javasctipt。

如果有人有参考,请告诉我们?

【问题讨论】:

【参考方案1】:

我在使用 Parse CloudCode 时编写 JavaScript。就我而言,我使用 CloudCode 来调用 Stripe API。

例如:

Objective-C

NSDictionary *parameters = @
                                 @"customerId": stripeCustomerId,
                                 @"amount": @(100),      
                            ;

[PFCloud callFunctionInBackground:@"chargeCustomer" withParameters:parameters block:block];

JavaScript

Parse.Cloud.define("chargeCustomer", function(request, response) 
  Stripe.Charges.create(
      amount: request.params.amount, // in cents
      currency: "usd",
      customer: request.params.customerId,
    ,
    success: function (httpResponse) 
        console.log(httpResponse);
        response.success(httpResponse);
    ,
    error: function (httpResponse) 
        console.error(httpResponse.message);
        response.error(httpResponse.message);
    
  );
);

如您所见,在这种情况下,要将变量从 Objective-c 传递到 javascript,您可以使用 request.params。

【讨论】:

这个答案对 Parse 来说非常具体,而 OP 要求提供一种在本机代码和 JS 代码之间进行通信的通用方法。【参考方案2】:

如果你的目标是iOS8,你可以考虑使用WKWebView而不是UIWebView,在这方面已经有了很大的改进。好的起点是the WKWebView reference docs 和这个NSHipster article。

【讨论】:

目标是iOS 7,不使用swift..,基本通信将字符串传递给Objective C,如何接收该字符串..我如何在Javascirpt中调用Objc方法 如果你的目标是【参考方案3】:

您可以使用原生 iOS 对象来执行此操作。

从 Obj-C 到 JS

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

它在 UIWebview 中加载的页面中注入或调用预先存在的方法/对象。它返回JS返回给你的值

UIWebView Class Reference

从 JS 到 Obj-C

实现UIWebView 协议,您可以在请求开始之前处理它:

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

因此,您必须从 JS 调用具有自定义架构 http 的 URL,例如 test://。然后你会在我之前写的委托方法中解析请求。

【讨论】:

如果你对 JS 到 Obj-C 有任何想法,你能用一个例子来解释一下吗..,其实我已经尝试过.. 但没有实现.. 无法将对象从 js 获取到 ObjC 从 JS 调用 window.location = "test://functionName?queryString"; 并在前面列出的方法中,检查架构:if ([request URL] scheme] isEqualToString: @"test"] // doSomething 这对您有帮助吗? ***.com/questions/9473582/ios-javascript-bridge

以上是关于如何在 ios 中将变量从 javascript 传递到目标 C 和目标 C 到 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 中将事件从 iOS 发送到 javascript

如何在phonegap ios中将设备令牌从Xcode抓取到javascript?

如何在模板中将数据从 Flask 传递到 JavaScript?

在Codeigniter中将javascript变量从视图发送到控制器[重复]

如何在 Rails 视图中将 Ruby 变量传递给 JavaScript 函数?

如何在 Zeppelin 的 javascript 中将变量放入 z ZeppelinContext?