我有问题!今天我在目标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上下文?
答案 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;
有关详细信息,请阅读以下链接:
我希望这可以帮到你。祝你好运。