做iOS開發(fā)近5年了淌喻,提交過的項目大大小小也有十幾二十個了僧家,每次提交版本到App Store審核時都要小心翼翼,如履薄冰裸删,甚至還要祈求喬老大顯靈順利通過八拱。但意外總是難免的,一不小心就會掉進坑里。
蘋果的官方文檔(AppStore審核條款)相信做iOS開發(fā)的都應該看過這里就不羅列了乘粒,大家有不知道的就去度娘或者翻墻谷歌豌注。在大部分的App中其實如果大家不做一些很黃很暴力,和現(xiàn)實賭博相關的應用或游戲的話都能夠順利通過審核的灯萍。今天我主要想以自身的親身經(jīng)歷跟大家回顧一下這些年我提交AppStore審核時踩過的坑轧铁,并且針對如何避免給出一些tips供大家參考。
遇到過的各種坑
1旦棉、與蘋果利益沖突
這條應該是最嚴重的齿风,任何事情觸犯了自己本身的利益都是會抗拒的。除了是商城或者購買實物的App绑洛,一些需要購買虛擬道具的都要使用蘋果的內購救斑,不能使用其他的支付平臺。但現(xiàn)在有些App會在審核的時候屏蔽其他支付方式真屯,一旦通過后將開放其他的支付平臺脸候。
做成與App Store一樣的應用下載功能,可能大家會發(fā)現(xiàn)之前的很多限免App現(xiàn)在已經(jīng)銷聲匿跡了绑蔫,這是因為與蘋果的應用商場一樣运沦,與蘋果利益抵觸了,所以蘋果一刀封殺配深,把所有App全部干掉携添。
所以很多App在開發(fā)前要考慮好做出來的功能是否與蘋果利益有沖突,不然到最后卻徒勞無功篓叶。
2烈掠、未遵守蘋果iOS App數(shù)據(jù)存儲指導方針
如果你的App有離線數(shù)據(jù)下載功能,尤其需要關注這一點缸托。因為離線數(shù)據(jù)一般占用存儲空間比較大左敌,可以被重新下載和重建,但是用戶往往希望系統(tǒng)存儲空間緊時也依然能夠妥妥的存在著嗦董,不會被IOS系統(tǒng)自動清理掉母谎。所以不能放在/Library/Caches 目錄下(該目錄在系統(tǒng)空間不足時可能會被iOS系統(tǒng)自動清除)。 那就只能放在主目錄/Documents ?或 主目錄/Library/自定義文件夾下京革,這樣才不會被iOS系統(tǒng)自動清理掉奇唤。但是這些數(shù)據(jù)可能會很大,如果放在 主目錄/Documents ?或 主目錄/Library/自定義的文件夾下匹摇,會被iCoud自動同步咬扇,那么用戶需要為了同步消耗不少流量,蘋果可能會因此拒絕你的應用上架廊勃。所以需要在程序中給自定義的目錄設置“do not backup”屬性懈贺。
關于數(shù)據(jù)存儲需要注意的點经窖,總結在下面:
關鍵數(shù)據(jù)
內容:用戶創(chuàng)建的數(shù)據(jù)文件,無法在刪除后自動重新創(chuàng)建
路徑:主目錄/Documents
管理:iOS系統(tǒng)即時遇到存儲空間不足的情況下梭灿,也不會清除画侣,同時會備份到iTunes或iCloud中
緩存數(shù)據(jù)
內容:可用于離線環(huán)境,可被重復下載重復生成堡妒,即使在離線時缺失配乱,應用本身也可以正常運行
路徑:主目錄/Library/Caches
管理:在存儲空間不足的情況下,會清空皮迟, 并且不會被自動備份到iTunes和iCloud中
臨時數(shù)據(jù)
內容:應用運行時搬泥,為完成某個內部操作臨時生成的文件
路徑:主目錄/tmp
管理:隨時可能被iOS系統(tǒng)清除,且不會自動備份到iTunes和iCloud伏尼,盡量在文件不再使用時忿檩,應用自己清空,避免對用戶設備空間的浪費
離線數(shù)據(jù)
內容:與緩存數(shù)據(jù)類似爆阶,可以被重新下載和重建燥透,但是用戶往往希望這些數(shù)據(jù)即使在存儲緊張時也不會被系統(tǒng)自動刪除
目錄:主目錄/Documents ?或 主目錄/Library/自定義的文件夾
管理:與關鍵數(shù)據(jù)類似,即使在存儲空間不足的情況下也不會被清除扰她,應用自己應該清除已經(jīng)不再使用的文件兽掰,以免浪費用戶設備空間 。需要設置”不備份到iCoud” 徒役,否則會審核不過。
3窖壕、未提供測試賬號和建立自己的賬戶體系
如果你的App有部分功能需要登錄才能使用忧勿,那么你需要在提交審核時,勾選演示賬戶瞻讽,并提供對應信息賬號名和密碼。
現(xiàn)在很多App都喜歡使用微博、微信和QQ來授權登錄到自己的App芭析,但蘋果現(xiàn)在的政策修改凛捏,需要有自己的一套賬號系統(tǒng)才可以審核通過,不然將會被拒烦磁。還有一些App為了更方便快捷养匈,都采用手機號+驗證碼的方式來登錄,這樣的話就沒有辦法給蘋果提供演示賬戶了都伪,除非賬戶系統(tǒng)后臺做修改提供支持呕乎。這種情況,就不需要勾選演示賬戶了陨晶,但是要在備注信息里跟蘋果好好解釋一下猬仁,說我們也是為了提升用戶體驗的,所以對賬戶系統(tǒng)做了改進,用戶有手機就能登錄湿刽,不需要注冊的的烁。
4、內容污穢诈闺、含有不文明語言撮躁,攻擊性言語
這個在做一些資訊或者UGC的App需要注意,還有一些可以評論的功能买雾,最好對內容進行審核或者過濾把曼。可能現(xiàn)在蘋果審核那邊招了一些華人來審核漓穿,現(xiàn)在一些中文的不文明字眼嗤军,他們一旦看到了也是會直接拒絕的。這個也是要在運營的時候多加注意晃危,因為審核通過后被用戶使用叙赚,而用戶亂發(fā)東西被天朝盯上了也不是一件好事。
內容標題等文字不能包含有Android的字眼僚饭,因為這是競爭關系震叮,所以肯定不可以出現(xiàn)的。
UGC的話還要加上舉報功能鳍鸵,這樣才能順利通過苇瓣。
5、權限隱私開通說明
當iOS9之后我們有許多的權限開通都需要詢問用戶偿乖,不可以冒然打開击罪,如果我們沒有詢問的話也是會被拒的。例如相機贪薪、相冊和定位功能媳禁。
6、上傳的屏幕快照跟App具體使用截屏相差太遠
有時候我們會把截圖做得很華麗甚至有點夸張画切,遠遠和現(xiàn)在的App界面有點不同竣稽,一旦蘋果看到也是會直接拒絕。還有一點尤其重要不要在截圖中出現(xiàn)Android的手機或者Android系統(tǒng)特有的界面霍弹。有一次就是因為截圖上的狀態(tài)欄是Android的樣式而被拒絕了毫别。
7、直接使用webview
直接使用webview做成一個App庞萍,這可能是能夠最快速搭建一個App并且在后期不用發(fā)版可以直接修改內容的方法拧烦,但蘋果明確表示這樣的App是不可以的,建議直接做成html5的就可以了钝计。但我們還是可以在App中添加一些原生的界面恋博,這樣就可以順利審核通過了齐佳。
8、其他被拒理由
因被拒的理由實在是太多了债沮,這樣就不過多詳細說明炼吴,我簡單列明一下,大家可以在評論上補充不同的理由疫衩。
使用未公開的API被發(fā)現(xiàn)
不穩(wěn)定硅蹦,容易崩潰
侵犯版權未獲得授權
App內有檢測更新
誘惑用戶到App Store評價
與手游相關的推薦下載
商城、活動獎勵和獎品頁面沒說明與蘋果無關
界面兼容性問題
使用了IDFA和廣告SDK但沒有在提交審核的時候勾選闷煤,或者在界面上沒有看到相應的廣告banner
App內容和勾選的應用等級不符
App描述與App無關或者功能不符
App的名字后面加上了較多無關的詞語
如何避免這些坑童芹?
我們說了這么多踩過的坑,或者差點踩過的坑鲤拿,無非就是想在以后App開發(fā)中盡可能的避免假褪。這里介紹本人的一些經(jīng)驗總結,供大家參考近顷。
1生音、預防在先
對產(chǎn)品經(jīng)理規(guī)劃的功能,首先需要判斷是否在技術上可以實現(xiàn)窒升,或者說在不使用非公開API的前提下實現(xiàn)缀遍。因為很多時候,即使你通過函數(shù)名動態(tài)拼接等技術手段在提交審核時躲過API掃描饱须∮虼迹或者在審核時通過網(wǎng)絡獲取配置和使用熱更新技術,但也難免被蘋果從功能上發(fā)現(xiàn)或者被競爭對手舉報冤寿。然后對交互設計和UI效果圖需要有自己的判斷歹苦,界面不能太丑,交互不能太復雜督怜,不能使用跟系統(tǒng)太過雷同的Icon。
之后就是可以考慮即將開發(fā)的App的功能是否可行狠角,在市面上有沒有類似的產(chǎn)品成功上線了号杠。
2、發(fā)版前過checklist
每個項目都需要沉淀發(fā)版前的checklist丰歌,把之前踩過的坑進行備忘姨蟋,也可以通過網(wǎng)絡資訊等手段了解最近時間被拒的一些主要原因,把可能跟自己APP相關的部分進行備注立帖,然后在發(fā)版前逐條檢查一遍眼溶。
3、預提交AppStore審核
預防措施做好了晓勇,發(fā)版前也過了checklist堂飞,但是有時候還是難免百密一疏有所遺漏灌旧,特別是新功能較多的版本。這里我要重點推薦的就是預提交AppStore審核绰筛。在項目開發(fā)基本完成的時候枢泰,我們可以提交一個版本到AppStore去審核,可以把版本號設置成比要發(fā)布的正式版本低铝噩,反正版本號后面的數(shù)字可以一直加上去衡蚂,不占用產(chǎn)品經(jīng)理定的版本號就行。并且需要把審核通過后是否釋放該版本到AppStore也要設置成手動哦骏庸,不然設成自動把版本發(fā)出去就麻煩了毛甲。預提交審核有什么好處呢?
(1)幫助暴露潛在的問題
這個版本可能開發(fā)了一些新功能具被,然后有些地方可能沒有考慮到審核相關的風險玻募。如果等待項目都要結束正式發(fā)版時才暴露出來,那可能拖延正式發(fā)布的時間硬猫,一些運營或者推廣將受到影響补箍。
(2)可以試探蘋果的規(guī)則
蘋果審核條款其實很多時候是沒有一個量化標準的,比如屏幕快照不能跟App具體使用時的截屏相差太遠啸蜜,拿到設計師給的屏幕快照時坑雅,我們有時候也沒有辦法確定到底是否真的符合蘋果的規(guī)范,但是沒有關系衬横,我們先提交一個版本試一試就知道了裹粤;還有再比如前段時間,蘋果要求6月1號以后提交的App都要支持IPV6-Only的網(wǎng)絡蜂林。但是由于歷史原因遥诉,項目中有些功能用的是第三方的SDK,他們沒有辦法在我們發(fā)版前提供新的支持IPV6的版本噪叙。這時候就可能遇到兩難境地是換掉SDK或者砍掉功能矮锈,還是繼續(xù)發(fā)布呢?其實我們就可以通過預發(fā)布的方式來試探一下是否可行睁蕾。也有的在今年頭必須要實行的使用https苞笨,但蘋果卻推遲了,所以如果我們提前提交版本也可以測試一下服務器是否可行子眶。有時候也可能是因為一些小功能的問題而影響到不能通過審核瀑凝,那這時候我們可以通過砍掉功能來通過。
4臭杰、關于AppStore加急審核
如果經(jīng)過前面的努力粤咪,你還是被拒了,或者App的發(fā)布要趕上某個時間運營節(jié)點渴杆,但是由于各種原因導致預留給App審核的時間太少了寥枝。這個時候你需要使用到蘋果的加急審核通道宪塔。
現(xiàn)在也有一些人專門負責加急審核,只需要在某寶上搜索的話就可以搜到一大堆脉顿,但我之前也問過一下價格少則2蝌麸、3千多則5、6千這對于普通的公司來說不是一筆小的錢艾疟,并且他們也可能沒做什么事情来吩,只是認識了蘋果的內部人員說幾句。其實如果需要加急的話自己操作簡簡單單就可以完成蔽莱,但要清楚知道弟疆,蘋果可不是說你提交了加急就給你加急的,如果大家都這樣去做那不是都和平常一樣盗冷,并且也有限定次數(shù)的怠苔,網(wǎng)絡傳聞是一年2次,但實際情況可能也是按你賬號里的App數(shù)量和下載量來決定的仪糖。而要怎樣去加急呢柑司,這里就簡單說一下。
在iTunes Connect底部可以找到聯(lián)系我們的tag點擊它锅劝。然后選擇以下的選項攒驰。
然后點擊Request Expedited Review就會跳去新的頁面,填寫相關的信息故爵。
其實都是一看就知道填寫的內容了玻粪。然后Explanation里面就是填寫你的理由了,最好就是中英都寫上這樣可以代表你的誠意诬垂。這里的話讓我想起了寫過“再不審核通過我們公司就要倒閉了”這些話語劲室,總之可以有多緊迫多嚴重就寫多嚴重,保證不用1结窘、2天就可以讓蘋果審核了很洋。
這里還有的就是如果有一些崩潰問題是必現(xiàn)的,修復提交版本后也可以在這里加急隧枫,填好必現(xiàn)的步驟蹲缠,只要蘋果能夠重現(xiàn)那肯定會讓你加急通過的,因為他們也不想有問題的App影響用戶體驗的悠垛。
其實從今年上半年開始,app審核時間大大縮短了娜谊,通常2确买、3天可以過審了,所以一般來說都不需要用到這個功能了纱皆。
畢竟iOS發(fā)布版本不像Android那樣有那么多市場可以選擇湾趾,還可以不用市場自己打包apk后放到網(wǎng)上供用戶下載就行芭商。所以在發(fā)布前大家多準備無妨。