iOS提审UIWebView的坑

近期提审公司的一款应用,遇到UIWebView的坑,在这里总结一下:

目前上传构建包的时候,如果扫描到代码中含有UIWebView源码引用或者静态库就会收到一下邮件:

apple审核反馈

证明你这个代码中有UIWebView相关问题,通常在xcode全局一搜UIWebView,替换为WKWebView即可。如果你引用三方framework或者pod库中包含UIWebView也会被检测到。

这里推荐一个检测UIWebView的方法:

在控制台,cd 到代码根目录,然后输入

 find . -type f | grep -e ".a" -e ".framework" | xargs grep -s UIWebView

结果如下:

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.m:- (void)webViewDidFinishLoad:(UIWebView *)webView {

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.m:- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.m:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.m:- (void)webViewDidStartLoad:(UIWebView *)webView {

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.h:    #import

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.h:    #define WVJB_WEBVIEW_TYPE UIWebView

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.h:    #define WVJB_WEBVIEW_DELEGATE_TYPE NSObject

./Pods/WebViewJavascriptBridge/WebViewJavascriptBridge/WebViewJavascriptBridge.h:    #define WVJB_WEBVIEW_DELEGATE_INTERFACE NSObject

./Pods/WebViewJavascriptBridge/README.md:An iOS/OSX bridge for sending messages between Obj-C and JavaScript in WKWebViews, UIWebViews & WebViews.

./Pods/WebViewJavascriptBridge/README.md:2) Instantiate WebViewJavascriptBridge with a WKWebView, UIWebView (iOS) or WebView (OSX):

./Pods/WebViewJavascriptBridge/README.md:##### `[WebViewJavascriptBridge bridgeForWebView:(WKWebVIew/UIWebView/WebView*)webview`

./Pods/WebViewJavascriptBridge/README.md: NSLog(@"Current UIWebView page URL is: %@", responseData);

会详细找到framwork或者.a 中的全部问题。

我这里采用pod方式引用了 WebViewJavascriptBridge  

采用pod方式,如果有UIWebView引用如何处理

这里有个podfile的写法  

pod 'WebViewJavascriptBridge', '~> 6.0.3'

pre_install do |installer|

  dir_web = File.join(installer.sandbox.pod_dir('WebViewJavascriptBridge'), 'WebViewJavascriptBridge')

  Dir.foreach(dir_web) {|x|

    real_path = File.join(dir_web, x)

    if (!File.directory?(real_path) && File.exists?(real_path))

      if(x == 'WebViewJavascriptBridge.h' || x == 'WebViewJavascriptBridge.m')

        File.delete(real_path)

      end

    end

  }

end

仿照这种方法可以,修改pod中文件,可以指定删除,注意tag和代码层级。


以上,提审UIWebView问题就差不多了~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,708评论 1 180
  • 前言:iOS 开发中,h5 和原生实现通信有多种方式, JSBridge 就是最常用的一种,各 JSBridge ...
    ShannonChenCHN阅读 8,570评论 11 63
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,096评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,111评论 0 4