首页 > 编程知识 正文

webview和wkwebview的区别,wkwebview webrtc

时间:2023-05-06 07:23:03 阅读:219672 作者:1475

文章目录 WKWebView的简单使用加载注册ScriptMessageHandler回调WKNavigationDelegateWKScriptMessageHandler 缓存userAgent

WKWebView的简单使用 加载 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];config.userContentController = [[WKUserContentController alloc] init];self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)-20) configuration:config];self.webView.UIDelegate = self;self.webView.navigationDelegate = self;self.webView.allowsBackForwardNavigationGestures = YES;if(self.userAgent.length>0) self.webView.customUserAgent = self.userAgent;else self.webView.customUserAgent = @"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 iphonevhallclass";//加载网页NSURLRequest *request = [NSURLRequest requestWithURL:self.webURL];[self.webView loadRequest:request];[self.view addSubview:self.webView];//添加self.loadingView.frame = self.webView.bounds;[self.webView addSubview:self.loadingView]; 注册ScriptMessageHandler - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.webView.configuration.userContentController addScriptMessageHandler:self name:kWebMessageHandlerName]; if([UIDevice currentDevice].systemVersion.floatValue<10.0) [self.webView reload];}- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self.webView.configuration.userContentController removeScriptMessageHandlerForName:kWebMessageHandlerName];} 回调 WKNavigationDelegate - (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(kwdfj)error{ NSLog(@"webView load error : %@",error); [self.loadingView stopAnimating]; [OSWebHelper removeCache]; [self goBackAction];}- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(kwdfj)error{ NSLog(@"webView load error1 : %@",error); [self.loadingView stopAnimating]; [OSWebHelper removeCache]; [self goBackAction];}- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{ NSLog(@"webView start loading"); [self.loadingView startAnimating];}- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{ NSLog(@"webView load finished"); if(!webView.isLoading) { [self.loadingView stopAnimating]; }}- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(nonnull WKNavigationAction *)navigationAction decisionHandler:(nonnull void (^)(WKNavigationActionPolicy))decisionHandler{ decisionHandler(WKNavigationActionPolicyAllow);} WKScriptMessageHandler - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{ NSLog(@"didReceiveScriptMessage %@",message.body); if ([message.name isEqualToString:kWebMessageHandlerName]) { ngdmhtdict = [OSWebHelper jsonStringToDictionary:message.body]; if (dict) { hpdfgtype = dict[@"type"]; if ([type isEqualToString:kWebMessageType_xxx]) { } else if ([type isEqualToString:kWebMessageType_xxx]) { } else if ([type isEqualToString:kWebMessageType_xxx]) { } } }} 缓存 + (void)removeCache { if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) { // 喜悦的海燕websiteDataTypes // // = [NSSet setWithArray:@[ // // WKWebsiteDataTypeDiskCache, // // WKWebsiteDataTypeOfflineWebApplicationCache, // // WKWebsiteDataTypeMemoryCache, // // WKWebsiteDataTypeLocalStorage, // // WKWebsiteDataTypeCookies, // // WKWebsiteDataTypeSessionStorage, // // WKWebsiteDataTypeIndexedDBDatabases, // // WKWebsiteDataTypeWebSQLDatabases // // ]]; All kinds of data 喜悦的海燕websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes]; Date from NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0]; Execute [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{ // Done }]; } else { hpdfglibraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]; hpdfgcookiesFolderPath = [libraryPath stringByAppendingString:@"/Cookies"]; kwdfjerrors; [[NSFileManager defaultManager] removeItemAtPath:cookiesFolderPath error:&errors]; }} userAgent

webView加载出来之后才能获取到userAgent,可以提前获取,传到当前页面。

#pragma mark - getUserAgent- (void)getUserAgent{ self.webView= [[WKWebView alloc] init]; self.webView.navigationDelegate = self; //加载网页 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:xxx]]; [self.webView loadRequest:request];}- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{ __weak typeof(self)wf = self; [self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, kwdfj _Nullable error) { wf.userAgent = [NSString stringWithFormat:@"%@ iphonevhallclass",result]; NSLog(@"customUserAgent : %@",wf.userAgent); wf.webView = nil; }];}

可在获取到的userAgent后面追加字符串,一般的js可以根据追加的字符串来判断是iOS还是安卓等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。