如题~~~~~
Android 和 iOS 都有对应的跟 webview 通信 api 的,下面代码仅供参考。
比如 Android 可以类似这样:
private void showWebView(String url) {
context.runOnUiThread(new Runnable() {
@Override
public void run() {
if (webView == null) {
setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
webView = new WebView(context);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.addJavascriptInterface(new WebAppInterface(), "aaaSettings");
webView.setWebChromeClient(new WebChromeClient());
rootView.addView(webView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
}
webView.setVisibility(View.VISIBLE);
webView.loadUrl(url);
}
});
}
iOS 也是类似的
- (void)openWebViewWithURL:(NSString *)urlString {
dispatch_async(dispatch_get_main_queue(), ^{
if (!self.webView) {
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
WKUserContentController *contentController = [[WKUserContentController alloc] init];
[contentController addScriptMessageHandler:self name:@"iOS"];
config.userContentController = contentController;
// 创建并注入全局变量和方法
NSString *scriptSource =
@"var aaaSettings = { "
" callMethod: function(message) { window.webkit.messageHandlers.iOS.postMessage({method: 'callMethod', message: message}); },"
"closeWebView: function() { window.webkit.messageHandlers.iOS.postMessage({method: 'closeWebView'}); },"
"openWithBrowser: function(url) {window.webkit.messageHandlers.iOS.postMessage({method: 'openWithBrowser',message: url});},"
"};";
WKUserScript *userScript = [[WKUserScript alloc] initWithSource:scriptSource
injectionTime:WKUserScriptInjectionTimeAtDocumentStart
forMainFrameOnly:NO];
[contentController addUserScript:userScript];
self.webView = [[WKWebView alloc] initWithFrame:self.parentView.bounds configuration:config];
self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.webView.UIDelegate = self;
[self.parentView addSubview:self.webView];
}
NSURL *url = [NSURL URLWithString:urlString];
// NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
self.isWebViewVisible = YES;
[self setOrientation:UIInterfaceOrientationPortrait];
});
}
3赞
注入到window对象中调用
你ios使用webview审核不会被拒吗?通过了没,我最近也有打算