1.页面悬浮按钮不显示问题,图大概和这个简书作者的一样。https://www.jianshu.com/p/e376f352e282
按照上面的方法,没解决。最后我直接修改了wkwebview的frame,问题解决
viewWillAppear中
self.wkWebView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - NavigationHeight - TabbarBottom);
2.h5页面调用OC方法不起作用,把网页路径放在safari浏览器上发现这行代码报错。
后来对比了一下前面能调用成功的方法,发现这个
window.webkit.messageHandlers.Location.postMessage必须传个参数iOS那边才能成功调用Location方法
window.webkit.messageHandlers.Location.postMessage();
3.关于打包内容中含有UIWebview的内容,2020年5月以后就不能在项目中使用UIwebview了。虽然项目中引入了UIWebview,但是我没有使用,我打包ipa,upload成功了之后。从appstore官网里构建版本看不到这个已经upload的构建版本。后来把webview的相关文件删掉,然后重新打包upload之后,几分钟就能看到构建版本里面有记录。
检查项目中是否有uiwebview,我都是搜索字符串替换删掉(太傻太天真)。
实际的操作流程是:https://www.jianshu.com/p/3a645500d461
4.接入第三方H5页面跳微信和支付宝支付失败
app业务中接入有第三方的游戏,话费充值,加油等H5模块,游戏的支付充值不需要做任何处理,但是话费充值和加油需要做。(这和第三方实现H5的方式有关)
对话费充值和加油模块的统一处理方式:
#pragma mark - WKNavigationDelegate
// 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
[webView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:nil];
}
// KVO 接收到通知时的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if ([keyPath isEqualToString:@"URL"]) {
// 可以在这里进行拦截并做相应的处理
if ([self.wkWebView.URL.absoluteString hasPrefix:@"weixin://wap/pay"] || [self.wkWebView.URL.absoluteString hasPrefix:@"alipay://alipay"]) {
NSURL *url = [NSURL URLWithString:self.wkWebView.URL.absoluteString];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
}
}
}
在didStartProvisionalNavigation方法里面监听当前WKWebview的URL,在处理时候将URL进行拦截,如果字符串中包含@"alipay://alipay"或者@"weixin://wap/pay",那么直接openURL的方式打开该链接。
网友评论