新聞中心
概覽
在設(shè)備上通過(guò) StoreKit 框架,利用來(lái)自 App Store Connect 的真實(shí)產(chǎn)品信息,使用 Apple 沙盒環(huán)境來(lái)測(cè)試你的 App 內(nèi)購(gòu)買項(xiàng)目的實(shí)施情況。使用沙盒 Apple ID 登錄 App Store 后,帶有開(kāi)發(fā)簽名的 App 會(huì)使用沙盒環(huán)境。

汕城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
要在 App Store Connect 中創(chuàng)建沙盒 Apple ID 或測(cè)試賬戶,請(qǐng)參閱“創(chuàng)建沙盒測(cè)試員賬戶”。
使用沙盒 Apple ID 登錄 App Store
要使用沙盒 Apple ID 運(yùn)行你的 App,請(qǐng)根據(jù)設(shè)備和操作系統(tǒng)來(lái)完成以下操作:
iOS 12 或更高版本 — 從 Xcode 構(gòu)建并運(yùn)行 App。第一次使用設(shè)備在帶有開(kāi)發(fā)簽名的 App 中進(jìn)行購(gòu)買后,“設(shè)置”中會(huì)顯示沙盒賬戶。使用沙盒 Apple ID 登錄。不需要退出非測(cè)試 Apple ID 的登錄。
macOS — 從 Mac App Store 退出登錄,然后在 Xcode 中構(gòu)建 App 并從“訪達(dá)”啟動(dòng)這個(gè) App。
進(jìn)行 App 內(nèi)購(gòu)買
第一次在帶有開(kāi)發(fā)簽名的 App 中進(jìn)行購(gòu)買時(shí),系統(tǒng)會(huì)提示你登錄 App Store。使用你的沙盒 Apple ID 登錄,以開(kāi)始測(cè)試。在提示中如果出現(xiàn)文本 [Environment: Sandbox],表示你已連接到測(cè)試環(huán)境;如果沒(méi)有出現(xiàn) [Environment: Sandbox],則表示你在使用生產(chǎn)環(huán)境。確保你運(yùn)行的 App 是帶有開(kāi)發(fā)簽名的構(gòu)建版本;帶有生產(chǎn)簽名的構(gòu)建版本會(huì)使用生產(chǎn)環(huán)境。
測(cè)試中斷的購(gòu)買
中斷的購(gòu)買是需要用戶在 App 以外執(zhí)行一些操作后才能完成購(gòu)買的一種交易。例如,用戶可能需要更新付款方式或接受新的條款和條件,然后才能繼續(xù)完成交易。
在沙盒測(cè)試中,你可以通過(guò)在 App Store Connect 中為沙盒 Apple ID 測(cè)試員開(kāi)啟中斷購(gòu)買功能,以此模擬中斷的購(gòu)買流程。這會(huì)中斷測(cè)試員的所有購(gòu)買行為,直至這名人員在 iOS 設(shè)備上同意更新后的條款和條件,或者你在 App Store Connect 中關(guān)閉這項(xiàng)功能,購(gòu)買才能繼續(xù)。有關(guān)更多信息,請(qǐng)參閱“測(cè)試中斷的購(gòu)買”。
設(shè)置測(cè)試
通過(guò)登錄 App Store Connect 來(lái)為沙盒 Apple ID 啟用中斷購(gòu)買,然后:
從“用戶和訪問(wèn)”,點(diǎn)按邊欄中“沙盒”下方的“測(cè)試員”。你可以在右側(cè)查看沙盒 Apple ID。
選擇你要啟用中斷購(gòu)買的沙盒 Apple ID。如果已經(jīng)啟用,你會(huì)在“中斷的購(gòu)買流程”列下看到一個(gè)勾號(hào)。
在出現(xiàn)的對(duì)話框中,選擇“中斷此測(cè)試員的購(gòu)買流程”。
開(kāi)始測(cè)試
在測(cè)試設(shè)備上,使用啟用了中斷購(gòu)買的沙盒 Apple ID 進(jìn)行登錄。
在你的 App 中,選擇“購(gòu)買”或“訂閱”來(lái)進(jìn)行 App 內(nèi)購(gòu)買。
觀察系統(tǒng)顯示付款頁(yè)面。
在你的代碼中,驗(yàn)證付款隊(duì)列收到狀態(tài)為
SKPaymentTransactionState.purchasing(英文) 的新交易。在設(shè)備上,驗(yàn)證該付款頁(yè)面。
在你的代碼中,付款將顯示失敗。付款隊(duì)列會(huì)收到狀態(tài)為
SKPaymentTransactionState.failed(英文) 的更新交易。檢查你的代碼調(diào)用了
finishTransaction(_:)(英文),以將交易從隊(duì)列中移除。在設(shè)備上,系統(tǒng)應(yīng)顯示條款與條件,導(dǎo)致購(gòu)買流程中斷 (因?yàn)槟阋褜⑸澈协h(huán)境配置為這樣)。
在設(shè)備上,輕點(diǎn)同意按鈕來(lái)接受條款與條件。
在你的代碼中,驗(yàn)證付款隊(duì)列是否收到一筆狀態(tài)為
SKPaymentTransactionState.purchased(英文) 的新交易,且這筆交易的productIdentifier(英文) 和數(shù)量都應(yīng)該與失敗交易的相同。在你的代碼中,驗(yàn)證相應(yīng)收據(jù)。檢查你的 App 提供了相關(guān)服務(wù)或產(chǎn)品,并且調(diào)用了
finishTransaction(_:)(英文)。在設(shè)備上,用戶應(yīng)觀察到購(gòu)買成功。
完成測(cè)試
沙盒 Apple ID 會(huì)繼續(xù)遇到購(gòu)買流程中斷,直到你在 App Store Connect 中停用此功能,或者直到用戶在設(shè)備上接受條款與條件。要在 App Store Connect 中停用中斷購(gòu)買流程,請(qǐng)按照為設(shè)置這一測(cè)試案例所介紹的相同說(shuō)明來(lái)操作,并且取消選擇“中斷此測(cè)試員的購(gòu)買流程”。
測(cè)試從“管理訂閱”頁(yè)面重新訂閱
在 iOS、Apple tvOS、iPadOS 和 MacOS 中的“管理訂閱”頁(yè)面上,客戶可以管理活躍的訂閱,也可以在到期后一年內(nèi)管理已過(guò)期的訂閱。在這個(gè)頁(yè)面中,顧客可以升級(jí)、跨級(jí)、降級(jí)或取消他們的訂閱。
在這個(gè)測(cè)試場(chǎng)景中,顧客要在你的 App 外從“管理訂閱”頁(yè)面重新訂閱已過(guò)期的訂閱。
設(shè)置測(cè)試
對(duì)于這個(gè)測(cè)試案例,你需要為沙盒 Apple ID 安排一個(gè)已過(guò)期的訂閱。如果沒(méi)有過(guò)期訂閱,可以購(gòu)買一個(gè)自動(dòng)續(xù)期訂閱產(chǎn)品并讓它過(guò)期。
你還需要在 App Store Connect 中配置一個(gè)或多個(gè)訂閱產(chǎn)品。
開(kāi)始測(cè)試
在測(cè)試用的 iOS 設(shè)備上,打開(kāi)“設(shè)置”>“Apple ID、iCloud、iTunes Store 和 App Store”。在“沙盒賬戶”部分下,輕點(diǎn)高亮顯示的沙盒 Apple ID,并輕點(diǎn)“管理”來(lái)打開(kāi)沙盒環(huán)境“訂閱管理”頁(yè)面。
輕點(diǎn)你要重新激活的已過(guò)期訂閱。顯示的訂閱產(chǎn)品是你在 App Store Connect 的同一訂閱組下配置的產(chǎn)品。
輕點(diǎn)來(lái)選取要重新訂閱的項(xiàng)目。此時(shí)應(yīng)能看見(jiàn)付款頁(yè)面顯示。
驗(yàn)證付款頁(yè)面以完成購(gòu)買。
打開(kāi)你的 App。
在你的代碼中,驗(yàn)證
SKPaymentTransactionObserver(英文) 獲得對(duì)paymentQueue(_:updatedTransactions:)(英文) 的回調(diào),并進(jìn)行了狀態(tài)為SKPaymentTransactionState.purchased(英文) 的交易。確認(rèn)你的代碼已檢索并驗(yàn)證了 App 收據(jù)。驗(yàn)證成功的交易會(huì)列在收據(jù)中。
在你的代碼中,確認(rèn)它已將 App 內(nèi)購(gòu)買項(xiàng)目提供給 App 并更新了訂閱用戶的狀態(tài)。
在你的代碼中,確認(rèn)它調(diào)用了
finishTransaction(_:)(英文)。有關(guān)更多信息,請(qǐng)參閱“完成交易 (英文)”。
完成測(cè)試
這個(gè)測(cè)試案例不需要清理。對(duì)于自動(dòng)續(xù)期訂閱,你可以在訂閱過(guò)期時(shí)再次進(jìn)行測(cè)試。
對(duì)自動(dòng)續(xù)期的停用進(jìn)行測(cè)試
在 iOS、Apple tvOS、iPadOS 和 MacOS 中的“管理訂閱”頁(yè)面上,客戶可以管理活躍的訂閱,也可以在到期后一年內(nèi)管理已過(guò)期的訂閱。在這個(gè)測(cè)試場(chǎng)景中,客戶將取消訂閱,而這會(huì)停用自動(dòng)續(xù)期。
要為此測(cè)試進(jìn)行設(shè)置,請(qǐng)使用沙盒 Apple ID 賬戶購(gòu)買一個(gè)自動(dòng)續(xù)期訂閱。
開(kāi)始測(cè)試
在測(cè)試用的 iOS 設(shè)備上,打開(kāi)“設(shè)置”>“Apple ID、iCloud、iTunes Store 和 App Store”。在“沙盒賬戶”部分下,輕點(diǎn)高亮顯示的沙盒 Apple ID,并輕點(diǎn)“管理”來(lái)打開(kāi)沙盒環(huán)境“訂閱管理”頁(yè)面。
輕點(diǎn)以選擇要取消的訂閱產(chǎn)品。
輕點(diǎn)“取消訂閱”按鈕。
接下來(lái),使用以下兩種方式之一來(lái)驗(yàn)證訂閱狀態(tài)變化:
如果你配置了 App Store Connect 設(shè)置來(lái)接收 App Store 服務(wù)器通知,每次訂閱產(chǎn)品的自動(dòng)續(xù)期狀態(tài)有變化時(shí),你的服務(wù)器都會(huì)收到
notification_type(英文)DID_CHANGE_RENEWAL_STATUS。有關(guān)更多信息,請(qǐng)參閱“啟用 App Store 服務(wù)器通知”。通過(guò)最新的收據(jù)調(diào)用 verifyReceipt (英文) 來(lái)驗(yàn)證收據(jù)。JSON 響應(yīng)中包含一個(gè)
pending_renewal_info對(duì)象,其auto_renew_status的當(dāng)前狀態(tài)已變?yōu)?0。auto_renew_status_change_date_ms包含狀態(tài)變化的時(shí)間戳。
對(duì)重新啟用訂閱自動(dòng)續(xù)期進(jìn)行測(cè)試
同樣是在“管理訂閱”頁(yè)面中,通過(guò)重新啟用訂閱來(lái)測(cè)試停用自動(dòng)續(xù)期的反向過(guò)程。輕點(diǎn)你要續(xù)訂的訂閱。
測(cè)試獲取你的產(chǎn)品標(biāo)識(shí)符
如果你在 App 中嵌入了產(chǎn)品標(biāo)識(shí)符,你可以在代碼載入了標(biāo)識(shí)符后設(shè)置代碼斷點(diǎn)。驗(yàn)證 NSArray (英文) 實(shí)例包含預(yù)期的產(chǎn)品標(biāo)識(shí)符列表。
如果 App 從服務(wù)器獲取產(chǎn)品標(biāo)識(shí)符,請(qǐng)手動(dòng)獲取這個(gè) JSON 文件,可以使用 Safari 瀏覽器等網(wǎng)頁(yè)瀏覽器來(lái)獲取,也可使用 curl 等命令行實(shí)用工具來(lái)獲取。驗(yàn)證你的服務(wù)器返回的數(shù)據(jù)是否已包含預(yù)期的產(chǎn)品標(biāo)識(shí)符列表,且服務(wù)器正確實(shí)現(xiàn)了標(biāo)準(zhǔn)的 HTTP 緩存機(jī)制。
對(duì)處理無(wú)效的產(chǎn)品標(biāo)識(shí)符進(jìn)行測(cè)試
在 App 的產(chǎn)品標(biāo)識(shí)符列表中故意包含一個(gè)無(wú)效的標(biāo)識(shí)符。然后,完成以下任一操作:
在生產(chǎn)構(gòu)建版本中,驗(yàn)證 App 顯示了商店 UI 的其余部分,并且用戶可以購(gòu)買有效的產(chǎn)品。
在開(kāi)發(fā)構(gòu)建版本中,驗(yàn)證 App 將問(wèn)題呈現(xiàn)給你。
檢查控制臺(tái)日志,并確認(rèn)你可以正確識(shí)別無(wú)效的產(chǎn)品標(biāo)識(shí)符。確保在測(cè)試后將它移除。
測(cè)試產(chǎn)品請(qǐng)求
利用你測(cè)試的產(chǎn)品標(biāo)識(shí)符列表,創(chuàng)建并提交一個(gè) SKProductsRequest (英文) 實(shí)例。在代碼中設(shè)置一個(gè)斷點(diǎn),然后檢查列表中的有效和無(wú)效產(chǎn)品標(biāo)識(shí)符。如果存在無(wú)效的產(chǎn)品標(biāo)識(shí)符,請(qǐng)?jiān)?App Store Connect 中復(fù)查你的產(chǎn)品,并更正你的 JSON 文件或?qū)傩粤斜怼?/p>
測(cè)試付款請(qǐng)求
使用你已測(cè)試過(guò)的有效產(chǎn)品標(biāo)識(shí)符,創(chuàng)建一個(gè) SKPayment (英文) 實(shí)例。設(shè)置一個(gè)斷點(diǎn),再檢查付款請(qǐng)求。將付款請(qǐng)求添加至交易隊(duì)列,再設(shè)置一個(gè)斷點(diǎn)來(lái)確認(rèn)系統(tǒng)會(huì)調(diào)用你的觀察器的 paymentQueue(_:updatedTransactions:) (英文) 方法。
雖然在測(cè)試過(guò)程中,你可以在不提供內(nèi)容的前提下立即完成交易,但未能完成交易可能會(huì)造成問(wèn)題。未完成的交易會(huì)永久遺留在隊(duì)列中,這可能會(huì)干擾后續(xù)的測(cè)試。
驗(yàn)證觀察器代碼
檢查交易觀察器對(duì) SKPaymentTransactionObserver (英文) 協(xié)議的實(shí)現(xiàn)情況。確認(rèn)在 App 沒(méi)有顯示其商店 UI,并且你近期沒(méi)有發(fā)起購(gòu)買的情況下,它也能夠處理交易。
在你的代碼中,找到對(duì) SKPaymentQueue (英文) 的 add(_:) (英文) 方法的調(diào)用。驗(yàn)證你的 App 在 App 啟動(dòng)時(shí)是否調(diào)用了這個(gè)方法。
測(cè)試成功的交易
使用沙盒 Apple ID 登錄 App Store,并在 App 中進(jìn)行一筆購(gòu)買。在交易隊(duì)列觀察器的 paymentQueue(_:updatedTransactions:) (英文) 方法實(shí)現(xiàn)中設(shè)置一個(gè)斷點(diǎn),再檢查這筆交易,以驗(yàn)證其狀態(tài)是否為 SKPaymentTransactionState.purchased (英文)。
在你的代碼中存續(xù)這筆購(gòu)買交易的位置上設(shè)置一個(gè)斷點(diǎn),然后確認(rèn)你的代碼保留了相應(yīng)數(shù)據(jù)來(lái)響應(yīng)成功購(gòu)買。檢查用戶默認(rèn)值或 iCloud 鍵值存儲(chǔ),并確認(rèn)你的代碼正確記錄了相關(guān)信息。
驗(yàn)證交易是否已經(jīng)完成
找到 App 調(diào)用 finishTransaction(_:) (英文) 方法的位置,再驗(yàn)證 App 在調(diào)用這個(gè)方法前是否完成了所有交易相關(guān)工作。確認(rèn)你已針對(duì)每筆交易調(diào)用了這個(gè)方法,不管交易成功與否。有關(guān)更多信息,請(qǐng)參閱“完成交易 (英文)”。
對(duì) App Store 服務(wù)器通知進(jìn)行測(cè)試
如果為 App 啟用了 App Store 服務(wù)器通知,請(qǐng)?jiān)谏澈协h(huán)境中測(cè)試用于交易的邏輯。要確定測(cè)試環(huán)境中是否發(fā)出了針對(duì)訂閱事件的通知,請(qǐng)檢查服務(wù)器對(duì)服務(wù)器 JSON responseBody (英文) 對(duì)象中 environment 欄位的值是不是等于 Sandbox。
有關(guān) App Store 服務(wù)器通知欄位的更多信息,請(qǐng)參閱“App Store 服務(wù)器通知 (英文)”。
測(cè)試自動(dòng)續(xù)期訂閱
自動(dòng)續(xù)期訂閱在測(cè)試環(huán)境和生產(chǎn)環(huán)境中有著不同的行為。
在測(cè)試環(huán)境中,訂閱續(xù)期以加快的速度發(fā)生,自動(dòng)續(xù)期訂閱在初始購(gòu)買后最多續(xù)訂五次。這樣一來(lái),你可以測(cè)試 App 如何處理訂閱續(xù)期、訂閱延遲和含有間隙的訂閱歷史記錄。如需沙盒環(huán)境中訂閱時(shí)限的完整列表,請(qǐng)參閱“測(cè)試 App 內(nèi)購(gòu)買項(xiàng)目”。
由于測(cè)試環(huán)境中到期和續(xù)訂速度已被加快,訂閱可能會(huì)在系統(tǒng)嘗試?yán)m(xù)訂之前到期,導(dǎo)致訂閱期間出現(xiàn)短暫延遲。生產(chǎn)環(huán)境中也會(huì)因?yàn)楦鞣N原因而可能出現(xiàn)這樣的延遲;驗(yàn)證你的 App 是否能夠正確處理相關(guān)情況。
網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)IOS教程:使用沙盒測(cè)試 App 內(nèi)購(gòu)買項(xiàng)目
URL鏈接:http://m.fisionsoft.com.cn/article/dpcpgjh.html


咨詢
建站咨詢
