AppStore稽核被拒原因及解決辦法

weixin_34008784發表於2017-09-18

日前蘋果開發者官網釋出了中文版的AppStore稽核指南,還羅列出了一些常見被拒情況,這無疑方便了我們這些天朝程式設計師,畢竟最近我就是提交了一款應用被拒了數次。當然稽核指南里面也只是大概敘述了一些被拒原因,並沒有將具體的解決方案提供出來,你也可以提供聯絡方式,蘋果方面會讓一位精通中文的客服聯絡你,協助你解決問題。其實,還是自己瞭解原因,及時解決的好。下面我就將自己實際開發中提交稽核被拒的原因以及網上搜集的被拒原因羅列出來,並附上具體的解決辦法。


1.應用中包括應用內購支付內容,稽核被拒

1013398-cbd7bd79e72f7b11.jpg
被拒原因截圖

這個內容核心在於蘋果方面認為這款應用是有損蘋果利益分成的,並且沒有找到公開的賬號註冊的入口,和微信打賞功能一樣,蘋果認為他的利益受到了損害.
換言之,蘋果在應用內購方面條款寫的比較露骨:蘋果公司僅能通過內購這一種形式獲得收益。所以特別介意這種沒有註冊功能的應用,它擔心貴公司通過其他途徑出售賬號,然後登入iOS應用內使用功能。
如果貴公司的應用並不屬於上述範疇,或者註冊功能隱藏較深。可以通過文字說明使用步驟,並在稽核時,新增附件視訊操作教程。把這些內容填寫在App稽核資訊右側的備註區域(就是寫演示賬戶密碼那塊的右邊備註:“對稽核過程會有所幫助的、有關您 App 的額外資訊, 包括在測試中需要的 App 特別設定等。”)裡面提交就好。
如果提交的應用屬於上述範疇,可能需要和產品經理好好溝通一下了。

2.允許使用App的使用者生成自定義內容,卻沒有適當的預防措施。

1013398-20b60540fae1deb3.png
被拒原因截圖

被這個原因拒絕,大多是因為你的App中包含了類似微信朋友圈的功能,使用者可以自定義釋出文字資訊和圖片,卻沒有任何防範措施。

解決辦法:

1.必須要有完整並且詳細的使用者許可協議(EULA),你可以把協議內容放到使用者註冊登入的首介面,使用者不同意就無法使用該App,協議內容可以參考和你分類相同的其它應用。
2.為應用增加投訴舉報和拉黑功能。
總而言之,在使用者可以自定義釋出內容之前,你可以考慮彈框提醒使用者必須要遵守使用者協議,否則無法釋出任何內容。我之前因為這個原因稽核被拒後,收到了蘋果客服的電話,明確告知我,每個展示自定義內容的條目,都必須有一個舉報按鈕,App還必須有拉黑模組,類似黑名單功能。當然,你把舉報和拉黑放到一起也是可以的,但是在稽核的備註資訊,必須詳細解釋。
 重要的事情說三遍,其實我的舉報和拉黑功能,只是裝裝樣子,裝裝樣子,裝裝樣子
1013398-c4714174de6c8dc0.jpg
點選按鈕,出現的舉報和拉黑介面

3.登入方式比較單一,自身沒有完整的註冊登入流程系統,例如只提供微信授權登入,登入必須要依賴於其它第三方App

1013398-763db640bbe27935.png
被拒原因截圖

蘋果方面認為你的應用門檻過高,使用者需要安裝其它第三方應用才能登入你的App,雖然在天朝幾乎人人手機都有微信和QQ,但是稽核人員都是在美國,不保證他們的裝置裝有微信和QQ,還有個坑就是即使你在Xcode設定了Devices只包含iPhone,但是他們還是會用iPad安裝測試你的App。

解決辦法 :

1.老生常談的辦法就是,判斷裝置是否安裝有微信或QQ,如果沒有,就隱藏微信登入或QQ登入的按鈕,這個方法大概16年的時候還可以通過稽核,但是我在網上搜集資料,說是該辦法已經無法通過稽核。
2.第二個辦法是我親自試過的,最近也通過了稽核,我們的產品設計甚至只有微信登入一種方式(產品還死犟絕對可以通過稽核,結果稽核被拒,啪啪打臉,有些人坑,坑的讓你無fuck說)。這個辦法就是,如果你的線上版本,必須只有微信登入這一種方式的時候,但是稽核的時候你需要給稽核人員提供一個遊客登入的方式,讓你的介面同事幫幫你吧,寫一個簡單的介面,根據介面的返回值是否顯示遊客登入的按鈕,線上不顯示,稽核顯示.

4.應用中包含應用更新功能被拒

1013398-c42c3aa4395cdbf3.png
被拒原因截圖

這個被拒原因現在基本上很少見了,現在AppStore的所有熱門應用,都有提示使用者更新的功能,像牛逼的12306App,你不更新,就用不了,別說你不坐火車和高鐵。如果因為這個原因被拒,只能說明你的提醒太頻繁了,讓稽核人員覺得如果使用者不更新新版本,就會一直重複提示,這和強制更新沒什麼區別。儘量讓使用者進入首介面後再提示有新版本更新,還有如果你的提示更新功能不是根據後臺介面返回值判斷的,而是根據本地對比AppStore資訊,那麼希望你用下面的程式碼去判斷.

NSDictionary *infoDict = [NSBundle mainBundle].infoDictionary;
NSString *app_Version = [infoDict objectForKey:@"CFBundleShortVersionString"];

5.採集裝置IDFA但應用沒有廣告功能

1013398-0b5f7f25f3e0024a.png
稽核必經之路

使用者在提交應用稽核的時候,都有一個選項讓你選擇是否包含廣告識別符號,這個選項我一般都選擇是,一般情況下,如果你的App中整合了友盟或者ShareSDK之類的第三方SDK,一般選擇“是”是絕對沒有問題的,當前友盟的SDK也分為包含IDFA版的和不包含IDFA版本的,這個是你在整合前需要考慮的,友盟的官方文件寫的也非常詳細。網上搜尋檢查應用中是否採集IDFA的教程一大堆,自己去查查吧.

6.應用在iPad上不能正常顯示或執行

因為iPhone和iPad都是iOS系統,所以它們都可以在AppStore下載應用。就算你在編譯器設定了只支援iPhone,但是iPad同樣可以安裝你的應用,這就帶來了一個坑,你必須也要適配iPad的機型介面,否則導致部分介面不能正常顯示或者顯示不全,你的應用就會被拒絕,經常會在被拒絕的附件截圖裡面看到iPad的截圖,所以在介面適配的時候注意這一點,純程式碼或者故事板都要做好。

7. 你的App中引入或推薦了一些不屬於你們自身的應用資訊,原文如下:

Apps may display and recommend apps other than your own only if the collection is designed for a specific approved need (e.g. health management, aviation, accessibility, etc.) or provides significant added value for a specific group of customers, or they will be rejected

這個被拒原因是因為你提交的App中,包含了一些其它應用資訊,這些應用不屬於你們,這就需要在相關頁面加入授權協議。防止侵權或被投訴,這些都是授權協議裡需要提到的。最好還是不要出現或推薦其它應用,除特殊情況,蘋果明令禁止應用內推薦其他APP。

8.在檔案和安卓市場涉及到了android平臺,這是蘋果不允許的。原文如下:

In addition, we noticed that your app contains irrelevant platform information in 檔案 and 安卓市場. Referencing third-party platforms in your app or its metadata is not appropriate on the App Store.

解決辦法:刪除任何提及“安卓市場”的字眼,修改或刪除涉及“安卓市場”的介面。這個問題解決很簡單.

9.需要登入才能正常使用的應用,缺少一個演示賬戶,展示應用的相關功能完整性。原文如下:

We were unable to sign in to review your app with the demo account information you provided. In order for us to review your app, please provide us with a functional demo account so that we may fully assess your app's features

1013398-d7a14eb3b25d0137.png
演示賬戶

解決辦法:在上圖中,為稽核人員,提供一個用於操作App的演示賬戶,以手機登陸的App,需要提供一個手機號,手機號給一個測試賬號用的,不需要簡訊驗證碼,密碼和後臺商量給一個固定四位或六位數,這些你都必須在備註裡說清楚。

10.如果你的應用包含後臺定位和讀取或寫入健康資料,都必須在提交稽核的時候,在應用描述裡向使用者表明,給你兩段話。

1.本應用包含HealthKit,支援App Health應用,經過使用者允許後,可將Health應用的運動資料同步到該App。

2.使用“XX”功能,會持續使用GPS定位服務,切換到後臺仍會儲存GPS連線,相比其他操作會消耗更多的電量。

如果想確保稽核通過,最好錄製一個應用持續後臺定位場景視訊,這個視訊真的不用很麻煩,推薦你一個工具蘋果錄屏專家,不過這個工具是有試用期的。把你的App裝到手機,開啟錄屏專家,再開啟你的App錄製就好了,錄好了,直接附件上傳。很方便

11.使用第三方地圖SDK,比如百度地圖,不需要再匯入蘋果的MapKit.framework。

12.某些應用的銷售地區限制(Your app contains content - or facilitates, enables, and encourages an activity - that is not legal in all of the locations in which the app is available.)原文如下:

1013398-14894c37a6e37191.png
被拒原因截圖

這個原因,我仔細分析過,是在提交應用的時候,價格和銷售範圍選項中,銷售範圍選擇了具體的某些國家或地區,所以需要你在開啟應用或使用應用的過程中,判斷當前地理位置是否在銷售或服務範圍內。比如你的應用,只支援在中國地區銷售,那麼香港和澳門特別行政區都不能使用和開啟你的App,你的使用者協議和服務協議也必須說清楚,否則蘋果會認為你的應用容易出現一些法律糾紛,某些股票或貴金屬類的應用,會有這樣的銷售範圍限制。

13.應用作者名與金融機構名字不一致

針對理財、P2P等金融相關產品,蘋果增加規定
開發者的名字必須與APP內的金融機構名字保持一致,否則會被拒。
且由同一品牌的金融機構提供服務的APP,必須釋出在同一個開發者賬號跟名稱下。

如果你已經代表委託人或者公司釋出了這些APP,你的委託人或者公司應該註冊iOS開發者賬號,並把你新增到他們的開發者賬號裡,這樣你就可以在他們賬號下面提交併釋出APP了。


和開發者賬號有關的其它內容

1.極光推送鑑權方式切換

之前使用極光推送,需要根據環境使用開發者賬號分別生成一個開發環境推送證書和生產環境推送證書,將證書下載下來匯入鑰匙串訪問,然後再將證書匯出為一個字尾為p12的檔案。在極光推送配置裡將這兩個P12檔案新增進去,這種方式比較麻煩,而且需要檢查證書是否過期,否則極光推送服務就會中斷。這種鑑權方式為證書鑑權。現在極光又推出了另一種鑑權方式-Token Authentication


1013398-63b2790a8cb60d06.png
鑑權方式

使用Token Authentication的鑑權方式,就需要配合使用開發者賬戶中證書裡面的一個新功能,如下圖所示


1013398-3fb763a83b79591b.png
Certificates, Identifiers & Profiles

這個key生成的是一個字尾為P8的檔案,用來在推送設定中繫結KeyID,TeamID和BundleID。KeyID就是這個Key的對應ID,TeamID就是你開發者賬戶的ID(登入開發者賬戶後,直接在當前網頁的網址連結中就可以看到,MemberShip中也可以找到),BundleID是你App的ID。

使用這種鑑權方式,永遠不必擔心推送過期的問題,因為它是永久性的。

2.想為自己的應用,新增一個描述性的備註,例如下圖

1013398-73a81d845a005065.jpeg
WechatIMG54.jpeg

我真的看到過有人試圖修改Display name來達到這種效果的,而且蘋果對App名稱是有字數限制的,根本不可能寫這麼長.其實很簡單,在iTunes Connect中的App資訊修改就行了,如下圖所示


1013398-e6f569ccfabe73a0.jpg
Jietu20170913-145557.jpg

先羅列這麼多,很多被拒原因在網上都能找到解決辦法,我只是舉例了幾種比較常見並且是我本人親身遇到的情況,後續再遇到棘手的被拒問題,我找到了解決辦法,也會第一時間更新。
如果你有任何AppStore稽核的問題以及關於開發者賬號申請,續費,轉讓App,證書錯誤的問題,也可以在文章底下留言。


有關應用中接入了HealthKit、TestFlight、Apple Pay的稽核建議

1.HealthKit

使用HealthKit或者ResearchKit框架(出於健康目的用於進行人體生物學研究的框架)的應用程式,必須遵守其所有適用區域的法律,以及iOS Developer Program License Agreement中的3.3.28和3.39條款。(增加了對於ResearchKit框架的支援)

將虛假或者錯誤的資料寫入HealthKit的應用程式將會被拒絕。

使用HealthKit框架的應用程式在iCloud中儲存使用者健康資訊將會被拒絕。

應用程式不允許將通過HealthKit API收集的使用者資料用作廣告宣傳或者基於使用的資料探勘目的,除了改善健康、醫療、健康管理以及醫學研究目的。

未經使用者許可與第三方分享通過HealthKit API獲得的使用者資料的應用程式將會被拒絕。

使用HealthKit框架的應用程式必須在營銷文字中說明整合了Health app,同時必須在app使用者介面清楚闡釋HealthKit的功能。

使用HealthKit框架的應用程式必須提供隱私政策,否則將會被拒絕。

提供診斷、治療建議,或者控制診斷疾病的硬體,或者治療疾病的應用程式,若沒有根據要求提供書面的監管審批,將會被拒絕。

收集人體生物學研究相關資料的應用程式必須要獲得參與者的許可,對於未成年人,應用程式要得到其父母或者監護人的許可。許可內容必須包括:(a)研究的性質、目的以及持續性;(b)參與流程、風險以及受益(福利);(c)資訊的機密性和資料處理(包括與任何與第三方的共享);(d)參與者問題切入點;(e) 取消方法(新增)

2.TestFlight

應用程式僅能使用TestFlight對以公開發布為目的的應用進行beta版測試,且必須遵守完整的App Review Guidelines。

當版本中包含的內容或功能有重大變化時,使用TestFlight的應用程式必須提交稽核。

使用TestFlight的應用程式不允許分發給測試者,以作為任何形式的補償。

3.Apple Pay

使用Apple Pay的應用程式必須在出售任何商品或者服務之前為使用者提供所有材料的購買資訊,否則將會被拒絕。使用Apple Pay進行定期付款的應用程式必須提供最低限度續費期限,付費將持續直至被取消,每個階段所付款額,費用付款歸屬,以及如何取消等。(增加了對於定期付款的規定)

使用Apple Pay的應用程式必須正確使用 Apple Pay Human Interface Guidelines 中的Apple Pay標識和使用者介面元素,否則將會被拒絕。

使用Apple Pay作為購買機制的應用程式所提供的商品或服務不能觸犯任何交付地範圍內的法律,也不能用作任何非法目的。

使用Apple Pay的應用程式必須提供隱私政策,否則將會被拒絕。

只有為了促進或提高商品和服務的交付,或者依照法律要件,使用Apple Pay的應用程式才能與第三方分享通過Apple Pay獲得的資料。

精通醫療類,網際網路金融類App過審,遊戲類馬甲包上架. QQ: 455525201

相關文章