1. 程式人生 > >告別被拒,如何提升iOS稽核通過率(上篇)

告別被拒,如何提升iOS稽核通過率(上篇)

iOS稽核一直是每款移動產品上架蘋果商店時面對的一座大山,每次提審都像是一次漫長而又悲壯的旅行,經常被蘋果拒之門外,無比煎熬。那麼問題來了,我們有沒有什麼辦法準確把握蘋果稽核準則,從而提升稽核的通過率呢?答案是肯定的,騰訊預審團隊從以下兩方面做了探索,經過近一年的推行和資料監控, iOS稽核月通過率從過往的35%提升到85%+:

1.分析過往提審被拒的案例,並結合《蘋果應用商店稽核指南》的條款,整理成可執行的審查條目;

2.抽離出可以自動化的方法,提升稽核的效率;

接下來我們將帶你一起走進蘋果稽核,揭祕iOS稽核的真相。本篇作為引子,分三個層面給大家簡單介紹iOS稽核相關內容:

一、iOS稽核探祕之稽核裝置篇


二、iOS稽核被拒緯度剖析
三、騰訊預審團隊的iOS預審驗收維度

一、iOS稽核探祕之稽核裝置篇

蘋果的產品從07年推出後,逐步推陳出新,外部市場上也已經有比較多的產品硬體版本和系統版本。如此多的系統版本,我們怎麼去保證提審版本的質量,是一直困惑測試和產品團隊的點。

往往蘋果突然釋出了新的系統,我們怎麼應對這些風險呢?

【經典案例】

14年底,由於iOS新版本8.1.1系統的釋出,做了一些系統底層Bug的修復,導致了遊戲產品支付不成功、webview登入失敗。
這裡寫圖片描述

【關鍵舉措】

1、與蘋果關注同樣的驗收版本:

推測蘋果稽核團隊裝置驗收選型也會遵循原則:驗收最新發布的兩個系統版本,兩個硬體版本。保證遊戲可以在市場佔有率最高的兩個系統版本及硬體配置上可以流暢執行。

因此騰訊預審團隊會根據當前版本釋出的節奏採購裝置,升級系統,保證能覆蓋到以上的系統版本和硬體版本。目前驗收的機器列表及型號:

這裡寫圖片描述

2、關注beta版本:

蘋果在新版本上線前會發布beta版本做少量測試,此時需要跟進beta版本,可以提前發現問題,避免突然版本釋出造成措手不及。

二、iOS稽核被拒緯度剖析

為了探究更深層次的被拒情況,我們做了細化的分析,通過往年的提審資料統計,看看都是因為哪些原因被拒吧!
這裡寫圖片描述

三、預審業務驗收的維度

根據2014年的資料統計情況,並結合《蘋果應用商店稽核指南》,預審組通過細分將預審工作劃為3大模組:客戶端資源檢查、應用內容檢查和提審資源檢查:

客戶端資源檢查

確保客戶端內Plist等配置符合蘋果要求,不存在多餘的Key值enable;

應用內容檢查

對應用的內容進行審查,確認無涉及色情、庸俗、暴力、槍支等內容;並對公告文字等篩查,無蘋果禁止的字眼等;應用內不包含cdkey兌換,好友邀請及炫耀等蘋果最新禁止的內容;

提審資源檢查

確保提交的遊戲截圖、視訊符合蘋果要求,且截圖及視訊中沒有敏感資訊;同時視訊截圖等均符合蘋果的技術要求,幀率解析度達標.

本文先簡介下蘋果稽核的相關內容,後續會依據業務驗收的維度,給大家逐一介紹驗收的要點、曾經遇到的坑和那些讓人不淡定的被拒案例。

我們先從客戶端檢查開始介紹

客戶端檢查的主要目的是通過客戶端配置檢查來保證客戶端符合蘋果的開發者規範以及其他更新的要求,包括儲存系統、配置檔案、網路連線(VPN)、icon檢查、私有API檢查,提審前的稽核會覆蓋這幾個部分的各個測試點。

1、儲存系統檢查

蘋果官方對使用者資料儲存有嚴格的規範,以往有很多被拒案例都是關於儲存的。因此,我們需要掌握蘋果官方資料儲存指引的相關內容:
這裡寫圖片描述

【經典案例】

【案例1】《專案A》x.x.0版本,因App啟動後在使用者的iCloud儲存有22.17MB的資料(通常是不能超過1MB),不符合 iOS資料儲存準則被拒。
這裡寫圖片描述

解決辦法:因增量更新累積檔案過大,經過修復後通過稽核。

【案例2】 《專案B》x.x.5版本,因沒有遵循iOS的資料儲存準則被拒,在應用的documents目錄下儲存了資原始檔,蘋果不允許非使用者生成的檔案放在這個目錄下,因為此目錄會被同步到iCloud。
這裡寫圖片描述

解決辦法:將需要存在的本地的資原始檔修改到了library/cache下。

2、配置檔案(Info.plist)檢查

Info.plist是一種結構化的文字檔案,通常所說的 “屬性列表”,iOS的app都使用Info.plist檔案來儲存元資訊,用來實現決定bundle所顯示的icon,當前app支援開啟的文件型別,服務宣告等等。關於此部分的檢查,我們通常關注如下方面的內容:
這裡寫圖片描述

【經典案例】

《專案C》x.x1版本,曾因Info.plist設定問題被拒,即應用程式不需要的檔案共享功能,但在Info.plist中的UIFileSharingEnabled鍵被設定為true了。

解決方法:Info.plist UIFileSharingEnabled鍵設定為false。

3、網路連線(VPN)

大多數App的稽核伺服器是部署在中國,然而蘋果的iOS稽核團隊卻又是在美國,他們進行稽核時,使用的是美國網路,這樣跨洲際的網路連線,難免會出現時延大、抖動、丟包等網路問題,為了提前驗證App後臺伺服器基於此場景下的反應,預審團隊採用美國VPN方式來模擬蘋果稽核團隊的訪問網路環境(應用從美國VPN網路中訪問後臺伺服器)。

【經典案例】

《專案D》曾因美國IP不能登入被拒。通過美國VPN連線,開發進行定位並修復後重新提審,並通過稽核。
這裡寫圖片描述

4、Icon檢查

蘋果官方對iPhone、iPad、iPod等應用程式的icon有明確的要求:要求ipa包中必須包含180x180,120x120,76x76,152x152尺寸的PNG格式的icon(詳見下表),並且不同尺寸的icon內容要一致。
這裡寫圖片描述

關於App icon的檢查,騰訊預審團隊採用自動化方法實現自動解壓ipa包,並逐一核實icon圖示是否存在並滿足要求,對於不滿足要求的ipa包,給出告警提示:
這裡寫圖片描述

【經典案例】

《專案E》x.x.x版本預審,未提供相關icon圖片資源,如果按此版本正式提審,等待蘋果的稽核結果,只會是被拒。

5、私有API檢查

私有API(Private API)是指放在PrivateFrameworks框架中的API,因呼叫私有API而在稽核中遭到拒絕的現象並不少見,近日,蘋果便下架了包括《爸爸去哪兒2》、《找你妹》在內的256款APP,原因是呼叫私有API,很明顯,蘋果明確不允許App使用這類API。

未公開的API(Non-publicAPI)雖然放在Frameworks框架中,但是卻沒有在蘋果的官方文件中有使用說明、程式碼介紹等。按蘋果的說法,未公開的API是還不夠成熟,可能還會變動的API,等完全成型了後會變成公開的API,但是目前不對其提供承諾,就是系統版本升級後可能會失效。對於non-public API,蘋果iOS稽核指南第2.5條款,同樣明確,如APP使用時,將會被拒絕(2.5 Apps that use non-public APIs will be reject)。

關於私有API的檢查,採用自動化工具掃描來實現,實現原理如下:

① 獲取未公開庫:基於iOS的SDK,dump出全庫,全庫減去私有庫和公開庫後,得到未公開庫(non-public API);

② 獲取標頭檔案方法和成員的列表:使用Otool等工具,對ipa的可執行檔案進行反編譯解析,獲取標頭檔案中方法和成員的列表;

③ 與未公開庫、私有庫進行匹配:將列表中的方法和成員,分別與私有庫和未公開庫進行匹配,如未有匹配成功項,則掃描通過,如有匹配成功項,則掃描不通過(給出告警和API名稱)。
這裡寫圖片描述

四、總結

1、實際上儲存系統的檢查是一套規範,遵循同系列理念,比如使用者本地儲存空間與蘋果iCloud伺服器儲存的合理使用,節約空間;

2、Info.plist檔案檢查實際上是xml檔案的鍵值檢查,並且值檢查關係是並列的。通過儲存檔案、plist用例的檢查,基本避免了因該類原因被拒的情況;

3、私有API檢查則通過自動化工具掃描來實現。

本文轉載自 “騰訊大講堂”微信公眾號。下期將會介紹“應用內容、提審資源檢查方法”,精彩內容,不容錯過!

【騰訊WeTest iOS預審工具】

為了提高IEG蘋果稽核通過率,騰訊專門成立了蘋果稽核測試團隊,打造出iOS預審工具這款產品。經過1年半的內部運營,騰訊內部應用的iOS稽核通過率從平均35%提升到90%+。

現將騰訊內部產品的過審經驗,以線上工具的形式共享給各位。在WeTest騰訊質量開放平臺上可以線上使用。體驗地址http://wetest.qq.com/ios

iOS預審工具分四步進行預審服務

【一鍵掃描】只需提供ipa包、稽核圖片、稽核視訊、應用描述,即可在4小時內拿到一份完整的檢測報告,定位問題的同時提供解決方案,助您成功通過稽核。

【案例分享】集結iOS稽核失敗常見原因,豐富案例為您提供參考依據。

【專家服務】騰訊專家團隊為您分析各種疑難雜症,提出最優解決方案。

【ASO優化】專業優化AppStore內關鍵字搜尋結果,讓產品離使用者更近一步。希望App/手遊在預審驗收保證下,都可以快快樂樂過審,開開心心賺錢。