1. 程式人生 > >iOS上線釋出稽核被拒及解決方案

iOS上線釋出稽核被拒及解決方案

  1. APP上傳打包到App Store時被拒

被拒郵件內容提示:
We have discovered one or more issues with your recent delivery for "司機DD". To process your delivery, the following issues must be corrected:
Missing Info.plist value- A value for the Info.plist key 'CFBundleIconName' is missing in the bundle 'com.bbyb.PrajnaDriver'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/current/#/dev10510b1f7.
Once these issues have been corrected, you can then redeliver the corrected binary.

解決方案:需要在xcode中新建一個放置圖片的資料夾Create an asset catalog,字尾名.xcassets,將icon圖示拖進去和啟動圖片拖進去即可

  1. ​​​iOS開啟後臺定位稽核被拒

解決方案:

第一次執行專案的時候的彈框要說明你定位的目的是什麼?(也就是告訴使用者你幹嘛要定位)

就是你在PLIST里加了後臺定位,新增描述檔案,描述使用定位是幹嘛的,明確功能作用。
普通的定位不需要加後臺執行,你如果只需要APP執行時定位,就不需要開後臺定位。
如果你的APP中真的有後臺定位的功能,比如物流類APP,需要實時定位記錄軌跡等,你就在APP的描述中說清楚,同時,免責宣告不是在plist裡寫,是在itunes中寫APP介紹的時候加上的。也就是使用者在app store搜尋你的APP的時候,看到APP介紹時候應該有那麼一句,反正就是:長時間定位有可能損耗電池balabala的。你翻出那一句,貼上到app描述中就行了。 

或者參考連結:https://www.jianshu.com/p/e71c7fb61ba0

  1. 在專案中使用到第三方的百度導航-後臺定位功能,釋出上線稽核被拒

被拒郵件內容提示:

2. 1 Performance: App Completeness

Guideline 2.1 - Information Needed
We have started the review of your app, but we are not able to continue because we need access to a video that demonstrates your app:
in use on a physical iOS device, which demonstrates your app’s background audio and location features. 
Please ensure the video you provide shows a physical iOS device (not a simulator).

解決方案:給蘋果方回覆為什麼使用後臺定位功能,使用定位做什麼用的,並提供一個演示視屏。因為蘋果稽核人員是看到有後臺定位的需求卻沒有在應用中看到有相應的定位軌跡體現,才拒絕應用併發郵件說需要一個演示視訊,特別提出要有後臺定位功能的片段。

如專案 3.7版本稽核被拒我的解決方案就是給蘋果稽核方回覆:在某介面中新增地圖導航按鈕,該功能主要是為客戶提供導航路線功能,所以在使用期間需要實時定位;在使用者使用導航時,若使用者手機已經安裝百度地圖,則會優先選用百度地圖第三方來進行導航;若使用者沒有安裝百度地圖則直接在本專案中新建一個導航介面進行導航;下面為您提供一個沒有使用第三方百度地圖進行導航功能演示視訊:http://v.youku.com/v_show/id_XMzE5MjI3NDk0OA==.html

  1. 由於IPV6網路稽核被拒

被拒郵件內容提示:

Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 11.2.1 on Wi-Fi connected to an IPv6 network.

解決方案:

1.如果App本身不相容IPv6,最好的辦法是讓App本身相容IPv6或通過升級伺服器來支援IPv6;

2.如果App本身已相容IPv6,是稽核人員所在的網路環境導致的問題,其解決方式之一是截圖或拍下視訊向蘋果申訴;另一個辦法就是什麼都不動,嘗試多次提交稽核(我們APP已經相容IPV6了,測試是通過的,所以重新提交稽核)

一般我們的專案是選擇第2中方案解決。

  1. 專案中可能使用到私有方法:dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(),載入遠端資源使用HTML

被拒郵件內容提示:

Guideline 2.5.2 - Performance - Software Requirements
Your app, extension, or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with App Store Review Guideline 2.5.2 and section 3.3.2 of the Apple Developer Program License Agreement.
This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes. This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior and/or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app. 

解決方案:查詢專案中是否使用到蘋果郵件中發來的那些私有方法,若沒有則需要將第三方的SDK進行更新,使用最新的SDK;將專案中沒有使用的介面進行移除,還有沒有使用的SDK進行刪除掉,重新上傳發布。

六. 專案釋出的時候,證書報錯需要在account中更新一下證書

之前遇到的坑:

1使用了後臺定位服務,但是沒有具體說明原因

2APP由於IPV6登不上被拒

3 APP沒有提供相關的測試資料,頁面執行不了

4測試不充分,AppBUG

5 APP頁面較多,互動太過複雜,需要提供演示視訊,蘋果稽核方不知道咋操作你的APP

6 App應用內有檢測更新功能,被拒,(解決:把功能刪除)

關於蘋果IPv6被拒的問題已完美解決,接此電腦WIFI即admin的WiFi測試APP就可以,WiFi密:12345678

(若再由於這個IPV6被拒就直接發起申訴或重新發布,一般是沒問題的)