使用WebKit,这将使您几乎尽可能接近且仍然很有可能通过苹果的批准流程。
这是一个简单的示例,基本上在网页上创建一个选择器,将字符串值发送给我在应用程序中,您处理该值并发送回结果,然后将其发布为网页的标题。
<h2 id="headline">loading...</h2>
<select id="selector">
<option value="systemVersion" selected>iOS Version</option>
<option value="systemName">System Name</option>
<option value="name">Device Name</option>
<option value="model">Device Model</option>
<option value="userInterfaceIdiom">User Interface</option>
<option value="identifierForVendor">Vendor ID</option>
</select>
这是 JavaScript 代码:
var headline = $("#headline");
var selection = $("#selector");
function set_headline (text) {
headline.text(text);
}
function call_native () {
var prop = selection.val();
set_headline("asked for " + prop + "...");
window.webkit.messageHandlers.observe.postMessage(prop);
}
setTimeout(call_native, 1000);
selection.on("change", call_native);
在应用程序结束时,您需要进行以下设置:
//配置webView并将其放置在屏幕上
[controller addScriptMessageHandler:self name:@"observe"]
configuration.userContentController = controller
NSURL *jsbin = [NSURL URLWithString:k_JSBIN_URL]
_webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]
[_webView loadRequest:[NSURLRequest requestWithURL:jsbin]]
[self.view addSubview:_webView]
处理 webView 事件:
-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
{
if ([message.name isEqualToString:@"observe"]) {
NSLog(@"Received event %@", message.body);
NSString *version = [[UIDevice currentDevice] valueForKey:message.body];
NSString *exec_template = @"set_headline(\"received: %@\");";
NSString *exec = [NSString stringWithFormat:exec_template, version];
[_webView evaluateJavaScript:exec completionHandler:nil];
}
}