iOS UIWebView上架被拒完全解法辦法

前言

hihi,勇敢的小夥伴兒們大家好,今天才知道Apple在2020年4月份停止接受使用UIWebView api的APP,所以小夥伴兒在上傳APP的過程中也許會收到類似內容的郵件,如圖:

一下子看到重點提示是UIWebView被棄用了,我們使用了被棄用的API,那麼問題來了,怎麼徹底清除項目中的UIWebView的代碼呢?這就是接下來我要分享給大家的內容。

正文

首先,正常操作就是全局搜索UIWebView,將使用到UIWebView的地方全部替換成WKWebView及其使用方法。其中需要注意的是AFNetworking中有一個UIWebView的方法,如圖:

這是因爲我用的舊版本的AFNetworking3.2.1,那我們該怎麼辦呢,升級一下版本就好啦,看看有沒有新版本爲該項內容做了調整,結果是有的,我升級到了4.0.1,再進行全局搜索就顯示沒有UIWebView了,非常棒,運行看看,報錯了,

遇到問題不要慌,我們想想辦法,參考Xcode 10 中關於 Error: Multiple commands produce修改workspace setting中的build system:

這樣就能成功的解決這個問題,但是還有問題,就是不同版本的AFHTTPSessionManager的實例方法是不一樣的,所以還需要對應改一下方法。比如原來的:

- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
                            parameters:(nullable id)parameters
                              progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
                               success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
                               failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;

被修改後變成:

- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
                            parameters:(nullable id)parameters
                               headers:(nullable NSDictionary <NSString *, NSString *> *)headers
                              progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
                               success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
                               failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;

 

相比之下多了一個header的參數。POST方法同理。

接下來問題基本解決了。所以我就提交了ipa,在我信心滿滿的等待過程中,沒錯,意料之外,情理之中的又來了一封郵件。結果依然是同樣的理由被拒,我好難過,我find了全局都沒找到一個UIWebView,爲什麼還要這樣對我?

原來,僅僅通過第一步是檢測不到.a文件和一些沒有添加到項目目錄中的文件中是否使用UIWebView的,所以接下來我們來到了決定成敗的關鍵之步:第二步!終端檢索項目中的UIWebView。

grep -r UIWebView .

僅僅通過這樣一行代碼就可以遍歷出所有隱藏在我們看不見的地方的UIWebView。如圖:

從這張圖中我們可以清晰的看出WeChatSDK和MOBFoundation以及AlipaySDK-iOS都含有UIWebView,其實我這是因爲單獨升級了AFNetworking的版本的後遺症,如果一下子全部pod update了之後就不會出現此問題。再執行命令後如圖:

UIWebView已經徹底從我們的項目中清除了!

喜大普奔,接下來再打包上傳一下看看,果不其然,蘋果爸爸通過了審覈。

構建版本成功地上傳了,接下里就可以愉快的提交審覈了。

但!是!我還需要進行TestFlight的測試,所以我又發現了一個小問題。如圖:

這是對於有加密的App需要的東西,向我們這種單純的小白,蘋果爸爸也給了我們一個解決辦法。如圖:

只要在項目的info.plist中自證清白就可以了,如圖:

把UIViewControllerBasedStatusBarAppearance設置成NO就可以了

重新上傳版本就會好了

emmmm,最後分享一下Transporter App上傳App的二進制文件,我一種都是笨笨的用XCode的upload方法上傳,相比之下,速度賊快!

 

最後,如果有問題還請大家指出,共同學習,共同進步!

沖沖衝!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章