AppStore上架審核過程中常見問題整理
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一 、iOS APP 上架流程簡介 1. 申請(qǐng)開發(fā)者賬號(hào) 蘋果的開發(fā)者賬號(hào)主要分為個(gè)人(Individual)、公司(Company)、企業(yè)(Enterprise)、高校(University)四種類型。一般開發(fā)者申請(qǐng)的都是個(gè)人或者公司的,企業(yè)的開發(fā)者賬號(hào)開發(fā)應(yīng)用不能發(fā)布到App Store,只能企業(yè)內(nèi)部使用。這個(gè)申請(qǐng)過程一般可能需要一個(gè)星期左右。公司和企業(yè)的需要鄧白氏碼,如果鄧白氏碼未申請(qǐng),請(qǐng)先申請(qǐng)鄧白氏碼,這個(gè)過程需要一到兩個(gè)星期。 這里插一句,如果有App代上架需求的,可以找我 2. 創(chuàng)建證書、AppID、生成描述文件 通過 Mac的鑰匙串工具,生成證書請(qǐng)求文件,下載證書,這里需要注意的是下載下來的證書只能在請(qǐng)求該證書的電腦上使用,如果想給其他開發(fā)者使用需要將已經(jīng)導(dǎo)入的證書導(dǎo)出為個(gè)人信息交換(.p12)格式供他人使用。AppID 的創(chuàng)建需要用到項(xiàng)目的Bundle ID,之后便可以創(chuàng)建描述文件了。 3. 在開發(fā)者中心的iTunes Connect 中配置 App 相關(guān)信息 在開發(fā)者中心里的iTunes Connect 里的 APP 選項(xiàng)中新建 APP 項(xiàng)目并配置相應(yīng)的信息(需要各個(gè)版本的屏幕截圖,運(yùn)行模擬器,調(diào)到最大(command+1),用 command+s截圖,還有就是一個(gè)1024*1024的圖標(biāo),不能有圓角) 4. 使用 Xcode 打包上傳 App 將 2 步驟中申請(qǐng)好的證書和描述文件正確配置到 Xcode 中,設(shè)置好Xcode的一些屬性: 1.在Xcode中選擇iOS Device(這里不能選擇模擬器); 2.如果應(yīng)用不支持橫屏,請(qǐng)?jiān)?General 選項(xiàng)中將 Landscape Left 和 Landscape Right 兩項(xiàng)的勾選去掉; 3.查看版本號(hào)和構(gòu)建版本號(hào); 4.將斷點(diǎn)、全局?jǐn)帱c(diǎn)、僵尸模式等都去掉; 5.設(shè)置為 Release 模式。 之后便可選擇 Xcode->Product->Archive打包項(xiàng)目,打包完成后選擇 Upload to App Store上傳。如果不想使用 Xcode上傳的話,也可以選擇 Export導(dǎo)出ipa文件, 需要注意的是在導(dǎo)出時(shí),必須選擇 Save for iOS App Store Deployment。然后通過Application Loader 工具上傳 ipa 文件。 5. 提交審核 以上步驟完成后,返回 iTunes Connect 上查看自己的 App 信息,在構(gòu)建版本中選擇剛剛上傳的 App 版本,此時(shí)有可能顯示正在處理,這時(shí)可能需要等幾分鐘再回來查看。選擇好版本后點(diǎn)擊提交以供審核,這時(shí) App 會(huì)變成等待審核狀態(tài)。 6. 后續(xù) 后續(xù)就是等待蘋果的審核人員審核應(yīng)用了,如果一切順利的話,這個(gè)過程需要一到兩個(gè)工作日便可完成審核,當(dāng)然前提是你的應(yīng)用符合蘋果的審核條款。如果審核不通過,請(qǐng)及時(shí)根據(jù)反饋信息修改應(yīng)用,再次提交直到符合要求。審核通過后,如果之前選擇已經(jīng)選擇好自動(dòng)發(fā)布,便可在 AppStore 上查看和下載應(yīng)用了。 二 、iOS 上架審核過程常見的坑與解決方法 1. 問題:用戶生成內(nèi)容(UGC)缺少必要的審核 為了防止非法濫用用戶生成的內(nèi)容,從而給用戶提供虛假信息、盜取用戶的知識(shí)產(chǎn)權(quán),社交應(yīng)用以及應(yīng)用當(dāng)中包含用戶生成的信息的應(yīng)用必須包括下述功能: 1.過濾不良內(nèi)容 2.提供舉報(bào)機(jī)制 3.后臺(tái)服務(wù)可以提供阻止騷擾用戶的行為 4.提供官方聯(lián)系方式,讓用戶可以快速聯(lián)系到開發(fā)商 解決方案: 維秀直播 App 提供了用戶實(shí)時(shí)彈幕功能,所以涉及到了 UGC,他們的處理方法是增加關(guān)鍵詞過濾,還有通過房管的方式人工審核,處理違規(guī)用戶。 2. 問題:應(yīng)用中使用了 IDFA 被拒絕 IDFA 主要被用于廣告中區(qū)分設(shè)備的作用。AppStore 禁止沒有使用廣告而采集 IDFA 的 App 上架,所以如果 App 本身沒有廣告的話,使用第三方 SDK 要注意檢查是否含有 IDFA 廣告模塊。 解決方案: 如果應(yīng)用本身有集成廣告的話,只需要在提交審核的時(shí)候勾選正確的廣告標(biāo)識(shí)符選項(xiàng)即可。 如果應(yīng)用本身未集成廣告,卻包含 IDFA的話。這種情況一般都是集成的第三方 SDK中包含IDFA 導(dǎo)致的。首先尋找是否有不包含 IDFA 的SDK 版本,如果沒有的話可以參考 ShareSDK 的解決方法,通過后臺(tái)配置在審核期間為應(yīng)用添加廣告,審核完成過后將廣告展示去掉。 3. 問題:應(yīng)用不支持 IPv6網(wǎng)絡(luò)下使用 2016年6月1號(hào)起,蘋果的審核人員會(huì)在 IPv6 網(wǎng)絡(luò)上審核你的應(yīng)用,所以如果你的應(yīng)用程序無法使用 IPv6 協(xié)議,可能會(huì)被拒絕。 解決方案: 我上架的卓易奪寶和小帶魚手機(jī)現(xiàn)金貸款軟件 App 上架過程中就因?yàn)?IPv6 的支持原因被拒。我的解決方案是: 協(xié)調(diào)后端人員添加對(duì) IPv6 網(wǎng)絡(luò)的支持。 App 端更新相關(guān)的第三方 SDK,比如使用ASI 或者 AFN 的版本太低,使用最新的AFN即可解決問題。當(dāng)然這些做完之后最好在Mac 上面搭建 IPv6網(wǎng)絡(luò)供測試人員進(jìn)行完測試再重新發(fā)布。 4. 問題:第三方登錄、支付、分享未安裝應(yīng)用,提示下載被拒 這個(gè)問題其實(shí)被拒的原因有兩種,第一種是未安裝應(yīng)用沒有任何提示,這種情況下相當(dāng)于應(yīng)用有無效的按鈕所以會(huì)被拒;第二種是提示下載對(duì)應(yīng)的第三方 App,這也是蘋果所不允許的。 解決方案: 最新的第三方登錄等相關(guān)的 SDK 目前已知的(微信,QQ,微博)都已經(jīng)對(duì)這種情況做了處理,在未安裝的情況下會(huì)調(diào)用 web 進(jìn)行登錄,所以如果測試過程中發(fā)現(xiàn)可以成功在 web 上登錄的話可以不做處理。以前在沒有這種處理機(jī)制的情況下需要開發(fā)者調(diào)用對(duì)應(yīng)接口,先判斷是否安裝了相應(yīng)的第三方 APP,如果未安裝,需要隱藏按鈕,這樣便可輕松過審。 5. 問題:虛擬產(chǎn)品未使用應(yīng)用內(nèi)支付(IAP)被拒 根據(jù)蘋果官方最新的審核條款:如果你希望通過付費(fèi)才可以解鎖你的應(yīng)用當(dāng)中的一些功能(例如,訂閱內(nèi)容,游戲貨幣,游戲關(guān)卡,獲取優(yōu)質(zhì)內(nèi)容,解鎖完整版本),你必須使用應(yīng)用內(nèi)付費(fèi)(IAP)。如果這種情況下,應(yīng)用使用了其他的第三方支付,應(yīng)用將被拒絕上架。 解決方案: 審核的時(shí)候,把相應(yīng)的虛擬產(chǎn)品隱藏起來,通過后再放出來,此招有風(fēng)險(xiǎn),可能會(huì)受到警告信,甚至被封號(hào),如果用戶量小就無所謂了,先把App 搞上架! 審核的時(shí)候,走 IAP 的支付方式,審核完成后再通過服務(wù)器配置動(dòng)態(tài)切換到支付寶、微信等第三方支付。該法類似于方案1,也存在風(fēng)險(xiǎn)。 學(xué)習(xí)58同城,讓用戶去網(wǎng)站購買產(chǎn)品,買了產(chǎn)品的賬號(hào)到移動(dòng)端使用功能。 老老實(shí)實(shí)的使用 IAP 吧。 6. 問題:使用后臺(tái)定位被拒 關(guān)于位置服務(wù)蘋果的審核條款原文如下: 使用位置服務(wù)的應(yīng)用程序必須提供和位置服務(wù)直接相關(guān)的功能。使用基于位置的API不允許用于提供緊急服務(wù),或者實(shí)現(xiàn)自動(dòng)控制車輛、飛行器以及其他設(shè)備(小型的設(shè)備例如小型無人機(jī)和玩具例外),遠(yuǎn)程控制汽車警報(bào)系統(tǒng)等。在收集、傳輸和使用用戶的位置數(shù)據(jù)之前,請(qǐng)確保你已經(jīng)取得了用戶的同意。如果應(yīng)用程序使用了后臺(tái)定位服務(wù),務(wù)必在應(yīng)用當(dāng)中闡明其目的。并且使用后臺(tái)定位的話需要提供一個(gè)明確的提醒告訴用戶這么做會(huì)加快電量消耗。 一般應(yīng)用在這一塊被拒的原因有以下幾種: 1.應(yīng)用根本不需要定位功能。 2.應(yīng)用需要定位功能,但是只需要短暫的獲取少數(shù)的用戶的位置,比如美團(tuán),新聞?lì)惖膽?yīng)用需要獲得當(dāng)前用戶的所在城市,卻使用了后臺(tái)定位模式。 3.應(yīng)用確實(shí)需要使用后臺(tái)定位,比如打車類軟件,但是應(yīng)用中卻沒有任何界面展示這些定位數(shù)據(jù)。 解決方案: 4.如果你的應(yīng)用根本不需要定位功能,但是還是在info.plist里面添加了location in theUIBackgroundModes key ,那么在plist文件里面移除UIBackgroundModes key就可以,這中情況較少,新手小白會(huì)犯這種錯(cuò)誤。 5.如果只是簡單獲取位置不需要使用后臺(tái)定位,只需要去掉info.plist 的文件中的 UIBackgroundModes 即可。 6.這種情況比較復(fù)雜,推薦的做法是通過表格或者軌跡展示出后臺(tái)定位的數(shù)據(jù),再提交審核的時(shí)候告訴蘋果那個(gè)功能需要后臺(tái)定位,具體展示后臺(tái)定位的數(shù)據(jù)在那個(gè)界面,最后需要 Continued use of GPS running in the background can dramatically decrease battery life加到 App 描述里面,可以參考滴滴出行的描述,否則也會(huì)被拒絕。 7. 問題:info.plist 權(quán)限配置被拒 iOS 10 之后如果需要調(diào)用相機(jī),藍(lán)牙等設(shè)備時(shí),需要在 info.plist 文件中進(jìn)行相應(yīng)的配置,否則應(yīng)用會(huì)直接崩潰,在 iOS 10 之前則是無法訪問。另外,如果在 info.plist 中調(diào)用了配置了權(quán)限在應(yīng)用中卻沒有使用到也是會(huì)被拒的。 解決方案: 一定要注意自己的 App 在使用中用到了哪些權(quán)限,不要添加無用的權(quán)限,也不要缺少必要的權(quán)限。 8. 問題:應(yīng)用提示更新被拒 應(yīng)用內(nèi)不能有任何提示更新應(yīng)用的字樣,且應(yīng)用的更新只能通過 AppStore。因?yàn)樘O果對(duì)于應(yīng)用的更新有自己的一套策略,所以禁止應(yīng)用本身提供更新方式,只要應(yīng)用內(nèi)出現(xiàn)。 解決方案: 如果不是很必要的話,盡量將應(yīng)用內(nèi)涉及到應(yīng)用更新的部分去掉。如果真的需要使用應(yīng)用更新,推薦的方法是應(yīng)用啟動(dòng)的時(shí)候獲取下應(yīng)用在 AppStore上面的版本號(hào),與自己的版本號(hào)進(jìn)行比較,當(dāng)自己的版本號(hào)小于 AppStore 上面的版本號(hào)時(shí),提示更新,否則的話不顯示更新相關(guān)的內(nèi)容。 9. 問題:奪寶(抽獎(jiǎng))類應(yīng)用被拒 根據(jù)AppStore 審核準(zhǔn)則 20.4 的規(guī)定,抽獎(jiǎng)卷或抽獎(jiǎng)參與權(quán)的購買,不論是透過第三方支付渠道或者余額扣款實(shí)現(xiàn),都不能夠在 app 內(nèi)執(zhí)行。 解決方案: 卓易奪寶 App 上架過程中遇到的問題,最后的解決方法是在審核過程中,所有的支付行為都跳轉(zhuǎn)到 Safari瀏覽器上面進(jìn)行,審核完成后再使用支付寶等 app 平臺(tái)支付。 10. 問題:隱私條款問題被拒 在未獲得用戶事先允許,或未告知用戶信息將被如何,在哪里使用的情況下,應(yīng)用不可以傳輸用戶數(shù)據(jù)。 解決方案: 《網(wǎng)站服務(wù)協(xié)議》《隱私條款》這些都不要少,注冊(cè)時(shí)候讓用戶可勾選。另外注明需要的用戶信息用來做什么。 11. 問題:未提供測試賬號(hào)被拒 如果應(yīng)用中有需要用到賬號(hào)或者其他資源的(例如:一個(gè)二維碼)才能使用的一些功能,但未提供給蘋果,可能會(huì)被拒絕上架。原因是蘋果審核人員無法測試這些功能。 解決方案: 提供一個(gè)有效的測試帳號(hào)以及登錄信息,并提供測試功能必要的的硬件和資源(例如,一個(gè)測試用的二維碼) 12. 問題:未通過 HTTPS 訪問被拒 App Transport Security(ATS) 是 Apple 為增強(qiáng) iOS App 網(wǎng)絡(luò)通信安全提出的安全功能,適用于iOS App 和 App Extension;在啟用 ATS 之后,它會(huì)強(qiáng)制應(yīng)用通過HTTPS(而不是 HTTP )連接網(wǎng)絡(luò)服務(wù)。 WWDC 2016上提出,2016年底或2017年初,具體時(shí)間未定。App Store上架審核加強(qiáng)對(duì)ATS 配置的review,即強(qiáng)制應(yīng)用必須通過HTTPS連接網(wǎng)絡(luò)服務(wù),而不是隨手將NSAllowsArbitraryLoads置為 YES,否則審核不予通過。 解決方案: ATS 的提出,是為了在系統(tǒng)層面保障iOS APP 網(wǎng)絡(luò)通信的安全;Apple 只所以加強(qiáng)對(duì)ATS 配置的審核,是為了防止開發(fā)者們遇到ATS相關(guān)的場景時(shí),只是簡單地將 ATS完全關(guān)閉(只要沒有強(qiáng)制性措施,開發(fā)者會(huì)這么做);在此基礎(chǔ)上,App審核同樣會(huì)遵循原則:App Review will require "reasonable justification" for most ATS exceptions。 Apple 官方給出的可以通過審核的聲明 demo 如下: 1.必須使用第三方提供的服務(wù),但是其沒有支持 HTTPS; 2.必須通過域名連接到設(shè)備,但該設(shè)備不能支持安全連接; 3.必須展示不同來源的網(wǎng)頁內(nèi)容,但是不能基于 NSAllowsArbitraryLoadsInWebContent支持的類(UIWebView / WKWebView)實(shí)現(xiàn); 4.載入加密的媒體資源并且其中不涉及個(gè)人信息。 由于 Apple 官方并沒有給出 ATS 審核的完整說明,ATS 審核時(shí)什么才是合適合理的聲明也沒有明確的客觀定義,以上 demo 描述僅能作為參照。 查看原文 該文章在 2023/10/25 14:36:47 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |