将类对象传递给javascript上下文目标C.

时间:2015-09-16 12:54:34

标签: javascript ios objective-c uiwebview

我有问题!今天我在目标C中开发一个应用程序与javascript对话,它看起来像这样。

我有一个UIWebview,我用JSContext检索上下文,然后将一个对象传递给上下文:

JSContext *context =  [self valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // Undocumented access
context[@"classNameInJS"] = [[objCClass alloc] init];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/page.html", path]];
[webView loadRequest:[NSURLRequest requestWithURL:url]];

一切正常但Apple拒绝我的应用程序,因为我使用JSContext。 那么是否有另一种方法将对象传递给javascript上下文?

1 个答案:

答案 0 :(得分:0)

理论上使用JSContext没有问题,但执行下载的脚本有。但是,取决于谁将在Apple Review流程中审核您的应用程序。我不知道如何将对象传递给javascript上下文。

我创建了一个应用程序并进行此通信(objective-c< - > javascript)我在objective-c中将函数调用到javascript,然后从javascript重定向到objective-c。

//to call a javascript function from objective-c
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"javascriptFunction('%@')", parameter]];

要接收来自javscript的回调,我认为唯一的方法是重定向传递URL中的参数,当UIWebview接收重定向时,调度webView委托shouldStartLoadWithRequest,然后从请求url获取参数并中断负载返回false

//webview delegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

有关详细信息,请阅读以下链接:

我希望这可以帮到你。祝你好运。