如何在ios中将变量从javascript传递到目标C,将目标C传递给Javasctipt

How to pass a variable from javascript to objective C and Objective C to Javasctipt in ios

本文关键字:目标 Javasctipt javascript ios 变量      更新时间:2023-09-26

我是iOS开发人员,是javascript的新手。

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

如何在ios中将变量从javascript传递到目标C,将目标C传递给Javasctipt。

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

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

例如:

目标-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。

如果您的目标是 iOS8,您可以考虑使用 WKWebView 而不是 UIWebView ,这在这方面有了很大的改进。好的起点是WKWebView参考文档和这篇NSHipster文章。

您可以使用本机 iOS 对象来执行此操作。

从 Obj-C 到 JS

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

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

UIWebView 类参考

从 JS 到 Obj-C

实施UIWebView协议,您可以在请求启动之前处理请求:

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

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