當應用完成測試后,就可以提交應用以供審核。 該章節(jié)重點介紹一些提示來幫助開發(fā)者通過審核過程。
一、遞交產(chǎn)品供審核
當?shù)谝淮翁峤粚徍顺绦驎r,同時需要提交內購產(chǎn)品以供審核。 第一次遞交通過審核后,后續(xù)更新應用程序和內購產(chǎn)品時則可以分別提交。 更多信息,請看 In-App Purchase Configuration Guide for iTunes Connect.
二、在測試環(huán)境中的收據(jù)
當應用程序在開發(fā),審核以及產(chǎn)品過程中,在不同的環(huán)境中運行。如下圖
在開發(fā)過程中,應用程序的版本是開發(fā)簽名的版本,它連接到應用開發(fā)服務器以及應用程序中的測試環(huán)境。 在產(chǎn)品過程中,用戶運行產(chǎn)品簽名版本的應用程序,它連接到應用產(chǎn)品服務器以及產(chǎn)品應用商店。 然而,在應用程序審核過程中,應用程序運行在混合的產(chǎn)品/測試環(huán)境中:它是產(chǎn)品簽名并且連接到應用產(chǎn)品服務器,但是它連接到應用商店的測試環(huán)境中。
當驗證在服務器中收據(jù)時,服務器需要能夠處理產(chǎn)品簽名的應用程序,它從蘋果的測試環(huán)境中獲取它的收據(jù)。 推薦方法是總是首先為應用產(chǎn)品服務器激活收據(jù)而不是為產(chǎn)品應用商店。 如果激活出現(xiàn) “Sandbox receipt used in production" 錯誤,則驗證測試環(huán)境。
三、實現(xiàn)核對清單
在遞交審核應用之前,驗證已經(jīng)實現(xiàn)了所有需要的行為。 確保應用已經(jīng)實現(xiàn)了以下內核內購行為(以典型的開發(fā)過程順序列出):
- 在 iTunes Connect里創(chuàng)建并配置產(chǎn)品。
- 在過程中更改產(chǎn)品,但是在測試任何代碼前,至少需要已經(jīng)配置好的產(chǎn)品
- 從應用 Bubdle 或服務器上獲取產(chǎn)品 ID (product identifiers). 用 SKProductsRequest 對象把列表發(fā)送給應用商店。
- 使用應用商店返回的 SKProduct 對象,為應用商店實現(xiàn)用戶界面。開發(fā)過程中使用簡單的界面,比如表格視圖或一些按鈕。在開發(fā)過程中運行順利后可以實現(xiàn)最終的用戶界面。
- 使用 SKPaymentQueue的addPayment: 方法來添加一個 SKPayment 對象到交易隊列,用來請求支付。
- 使用 paymentQueue:updateTransactions: 方法來實現(xiàn)交易隊列觀察者 (transaction queue observer)。
- 在開發(fā)過程中有任何需要時, 在 SKPaymentTransactionObserver 協(xié)議里實現(xiàn)其它方法。
- 為了以后能夠啟動,做永久交易記錄,傳遞已被購買的產(chǎn)品,下載全部相關內容,并在最后調用 SKPaymentQueue 的 finishTransaction:方法。在開發(fā)過程中,只實現(xiàn)該代碼的簡易版本--比如,只是簡單的在屏幕上顯示“Product Delivered” 字樣---然后在開發(fā)過程中有任何需要時實現(xiàn)真實版本。
如果應用程序出售非消耗產(chǎn)品,自動更新訂閱,或者非自動更新訂閱,驗證你已經(jīng)實現(xiàn)了以下恢復邏輯:
- 提供 UI 來開啟恢復過程。
- 通過使用 SKReceiptRefreshRequest 類來刷新應用收據(jù)或者使用 SKPaymentQueue 類的 restoreCompletedTransactions 方法來恢復完整交易,來獲取過去購買的信息。
- 允許用戶重新下載內容。如果使用蘋果托管內容,恢復完整交易并使用交易的downloads特性得到SKDownload類的對象。
- 如果應用服務器是托管內容,正確訪問應用服務器。
如果應用程序出售自動或非自動訂閱,驗證已經(jīng)實現(xiàn)以下訂閱邏輯:
- 通過傳遞最新發(fā)布的內容片斷來處理嶄新的購買訂閱---比如,一本雜志最新的問題。
- 當新內容發(fā)布時,用戶是可以使用的。
- 當訂閱到期后,允許用戶重新更新它。
如果應用程序出售自動訂閱,允許應用商店處理該過程,不要嘗試自己來處理如下內容。如果應用程序出售非自動訂閱,應用程序負責處理如下過程。
- 當訂閱到期后,停止用戶使用新內容。更新應用界面,這樣用戶就可以選擇再次購買該訂閱并重新激活它的內容。
- 實現(xiàn)系統(tǒng)來跟蹤最新發(fā)布的內容。 當恢復購買時,使用該系統(tǒng),讓用戶可以根據(jù)訂閱激活的時間來訪問他們已經(jīng)支付的內容。