iOS開發(fā)內(nèi)購教程In App Purchase 需要了解的

-我要在app里添加IAP,必須要注冊(cè)自己的產(chǎn)品標(biāo)識(shí)符(product identifiers)。產(chǎn)品標(biāo)識(shí)符是什么?

產(chǎn)品標(biāo)識(shí)符(Product Identifiers)是一串字符串,它用來識(shí)別你在應(yīng)用內(nèi)販賣的每件商品。App Store用產(chǎn)品標(biāo)識(shí)符來檢索產(chǎn)品信息,標(biāo)識(shí)符只能包含大小寫字母(A-Z)、數(shù)字(0-9)、下劃線(-)、以及圓點(diǎn)(.)。你可以任意排列這些元素,但我們建議你創(chuàng)建標(biāo)識(shí)符時(shí)使用反向域名,比如 com.companyname.application.productid

備注:產(chǎn)品標(biāo)識(shí)符和Apple ID以及Bundle ID沒有關(guān)系,它們看起來可能比較像Bundle ID,但是兩者是不一樣的。所以,在代碼里你不能用Apple ID或者Bundle ID代替產(chǎn)品標(biāo)識(shí)符。

-怎么創(chuàng)建產(chǎn)品標(biāo)識(shí)符?

IAP表單(TheIn-App Purchases form)是用來生成IAP產(chǎn)品的,它包含了產(chǎn)品ID的字段,這個(gè)字段必須要填到表里。這個(gè)字段可以為你的產(chǎn)品指定產(chǎn)品標(biāo)識(shí)符。你可以按下面的步驟來創(chuàng)建產(chǎn)品標(biāo)識(shí)符:

1.登入iTunes Connect, 點(diǎn)擊主頁面上的Manage Your Applications模塊。

2.進(jìn)入Manage Your Apps 頁面,你可以看到你所有的應(yīng)用列表。選擇你想要?jiǎng)?chuàng)建IAP的產(chǎn)品的app,在下個(gè)頁面中點(diǎn)擊Manage In-App Purchases按鍵,然后在點(diǎn)擊創(chuàng)建。

3.選擇IAP產(chǎn)品的類型。iTunes Connect會(huì)帶你進(jìn)入IAP表單,在這個(gè)表單里有“保存”按鍵。完整填寫Product ID以及表單里的其他字段。

注意事項(xiàng):產(chǎn)品標(biāo)識(shí)符一旦創(chuàng)建無法修改,此外,如果應(yīng)用審核沒有通過,這個(gè)產(chǎn)品標(biāo)識(shí)符也無法再次使用。

-如何在app中如何使用產(chǎn)品標(biāo)識(shí)符?

首先創(chuàng)建SKProductsRequest,然后把產(chǎn)品標(biāo)識(shí)符列表傳至initWithProductIdentifiers 來讀取產(chǎn)品信息。

-當(dāng)在Sandbox 環(huán)境測試In-App Purchase 時(shí),為什么我得到的是“Payment requests are restricted to products returned as valid via Store Kit’s didReceiveResponse method”錯(cuò)誤信息?

執(zhí)行In-App Purchase的app的用戶界面必須有App Store允許的可供購買的產(chǎn)品。在你決定在用戶界面展示用于購買的產(chǎn)品之前,你的app必須先向App Store發(fā)送一個(gè)產(chǎn)品請(qǐng)求。

-StoreKit提供了兩種支付支付請(qǐng)求的解決辦法:

[SKPayment paymentWithProductIdentifier:PRODUCT_ID] [SKPayment paymentWithProduct:YOUR_SKPRODUCT_OBJECT] 蘋果建議您使用 [SKPayment paymentWithProduct:YOUR_SKPRODUCT_OBJECT] 使用這個(gè)方法可以確保你一直處于有效的產(chǎn)品支付請(qǐng)求狀態(tài),同時(shí)也確保用戶可以購買你的產(chǎn)品。 所以,務(wù)必只展現(xiàn)App Store返回的產(chǎn)品信息。了解更多有關(guān)于app內(nèi)產(chǎn)品展現(xiàn)信息,請(qǐng)查看In-App Purchase 編程指南的Feature Delivery部分。

-In-App Purchase有幾種類型?

In-App Purchase共有3中類型,Consumable:一次性購買,最簡單的類型,不用保存歷史記錄。 Nonconsumable:每個(gè)產(chǎn)品,用戶只買一次,此后就可以在自己的所有設(shè)備上看到該產(chǎn)品。 Subscriptions:訂閱模式允許多次購買末一個(gè)產(chǎn)品,但是購買后,用戶可以在自己的所有設(shè)備上看到該產(chǎn)品。

-iOS 中使用 IAP 方式在程序內(nèi)購買的內(nèi)容在重裝系統(tǒng)后還需要再次購買嗎? 比如Camera+內(nèi)的濾鏡。

不必。以 Camera+ 為例,Menu 里最下方的選項(xiàng) Restore purchases 即可幫你解鎖已經(jīng)購買的濾鏡。任何實(shí)現(xiàn)了 IAP 功能的 App 基本都會(huì)提供這一選項(xiàng),或者在第二次購買時(shí)提示已購。

消耗類(如游戲金幣)需要購買。 功能類不需要購買,有些應(yīng)用提供“Restore purchases”,沒有的可以再次嘗試購買,會(huì)提示已付費(fèi)。

-IAP 能做限時(shí)免費(fèi)嗎? 想做一個(gè)免費(fèi)下載、部分內(nèi)容免費(fèi),但是閱讀更多內(nèi)容需要付費(fèi)解鎖的閱讀應(yīng)用。這樣可以把IAP的價(jià)格限時(shí)免費(fèi)為0嗎?

可以的,你可以設(shè)定價(jià)格為0時(shí)就不走IAP了。

創(chuàng)建產(chǎn)品ID的時(shí)候,選擇多少錢的時(shí)候選錯(cuò)了,程序還未提交,還能修改嗎?

可以的,在應(yīng)用程序的信息中。

-升級(jí)iOS5 GM的過程中恢復(fù)備份出了問題,導(dǎo)致In-App Purchase也丟失了。有沒有辦法恢復(fù)? 在iPad上曾經(jīng)進(jìn)行過一些In-App Purchase,但是在升級(jí)iOS5 GM的過程中恢復(fù)備份出了問題,導(dǎo)致除了恢復(fù)升級(jí)前的所有應(yīng)用程序之外,其余個(gè)人信息一概丟失。iTunes上可以查詢到購買記錄。具體來說,買的是Splashtop的把iPad作為第二顯示器的軟件,Xdisplay。

In-App Purchase 分好幾種,最常見的是 Non-Consumable,就是只需要用戶購買一次的。如果是這種類型的,再購買一次同一個(gè)商品就能夠恢復(fù)了,不會(huì)收取額外費(fèi)用。如果 app 做得好的話,應(yīng)該提供一個(gè) Restore 功能,以專門恢復(fù)以前購買過的 Non-Consumable 的商品。

-在iTunes Connect中每個(gè)應(yīng)用可以創(chuàng)建多少個(gè)IAP產(chǎn)品ID?

請(qǐng)參閱iTunes Connect Developer Guide的注冊(cè)IAP部分

-在iTunes Connect里找不到Manage In-App Purchase (管理IAP)按鍵怎么辦?

以下是可能導(dǎo)致“Manage In-App Purchase”按鍵無法使用的原因

a.不是iTunes Connnect的管理員(Admin)或開發(fā)者(Technical)賬號(hào)。

b.沒有同意最新的iOS或Mac開發(fā)者許可協(xié)議。

c.最新的付費(fèi)應(yīng)用協(xié)議(Paid Applications contract)沒有生效

-必須上傳程序的二進(jìn)制碼才能測試IAP嗎?

沒有這個(gè)必要。

重要事項(xiàng):除非你的應(yīng)用已經(jīng)做好了接受蘋果審核的準(zhǔn)備,否則請(qǐng)不要上傳Development Binary至iTunes Connect。如果iTunes Connect里的二進(jìn)制編碼不完整,二進(jìn)制編碼被拒的可能性很大。一旦二進(jìn)制編碼通過審核,就可以測試In-App Purchase功能了。

-出現(xiàn)了“您的賬號(hào)信息已變”錯(cuò)誤怎么辦?

“您的賬號(hào)信息已變”錯(cuò)誤出現(xiàn)的原因是在測試IAP的時(shí)候你使用的是設(shè)備的測試賬號(hào)。解決方法是退出賬號(hào),然后在iTunes Connect創(chuàng)建一個(gè)新的測試賬號(hào),使用新的測試賬號(hào)來測試IAP。

-為什么我的產(chǎn)品標(biāo)識(shí)符在invalidProductIdentifiers中被退返?

有可能是以下原因:

a.沒有填完財(cái)政需求表(請(qǐng)參閱本文檔的“合同、稅務(wù)以及銀行信息”部分)

b.沒有使用正確的App ID。

c.沒有使用正確的與App ID緊密關(guān)聯(lián)的Provisioning Profile。

d.代碼中沒有使用正確的產(chǎn)品標(biāo)識(shí)符。更多產(chǎn)品標(biāo)識(shí)符的信息請(qǐng)參閱技術(shù)問答,第1329條—IAP產(chǎn)品標(biāo)識(shí)符。

e.你沒有清除iTunes Connect中促銷的IAP產(chǎn)品。

f.也許你已經(jīng)修改了你的產(chǎn)品,但它沒有在App Store的服務(wù)器中生效。

g.蘋果拒絕了你最新向iTunes Connect提交的二進(jìn)制碼。

-出現(xiàn)了“你已購買本商品,但商品沒有被下載”錯(cuò)誤怎么辦?

你的應(yīng)用沒有調(diào)用SKPaymentQueue ‘s finishTransaction。調(diào)用finishTransaction:允許你從支付隊(duì)列中移除交易。

-出現(xiàn)“你已成功購買,點(diǎn)擊‘確認(rèn)’再次進(jìn)行免費(fèi)下載”錯(cuò)誤怎么辦?

這個(gè)信息是個(gè)提醒,不是錯(cuò)誤。這表明你試圖購買一個(gè)你已經(jīng)購買了的非消耗性產(chǎn)品。購買一個(gè)非消耗性的產(chǎn)品時(shí)不會(huì)被扣費(fèi)。

-調(diào)用 payment queue的 restoreCompletedTransactions: 方法不能恢復(fù)app的任何產(chǎn)品。

可能由于以下原因:

你沒有任何先前購買過的非消耗類產(chǎn)品。

你試圖恢復(fù)的訂閱產(chǎn)品或者非消耗類產(chǎn)品是不可恢復(fù)的類型。

restoreCompletedTransactions: 方法只能恢復(fù)非消耗類產(chǎn)品。

注意: 在沒有可恢復(fù)產(chǎn)品的情況下,Store Kit不會(huì)調(diào)用paymentQueue:updatedTransactions:方法。

-應(yīng)該什么時(shí)候恢復(fù)In-App Purchase產(chǎn)品?

在以下兩種情況下你可以恢復(fù)自動(dòng)更新的訂閱產(chǎn)品和非消耗類產(chǎn)品:

a.在客戶其他設(shè)備上安裝

b.在刪除了關(guān)聯(lián)應(yīng)用的其他設(shè)備上重新安裝

-如何解決“這不是測試用的用戶賬號(hào),請(qǐng)?jiān)赟andbox環(huán)境下創(chuàng)建一個(gè)新的賬號(hào)”的問題?

出現(xiàn)這個(gè)錯(cuò)誤的原因是在確認(rèn)購買信息時(shí)你使用的是iTunes用戶賬號(hào)。解決的辦法是退出賬號(hào),然后使用你的IAP測試賬號(hào)。

-回單(receipt )核實(shí)失敗,并且出現(xiàn)字符串 (iOS)。

可能有以下幾個(gè)原因:

a.在你的iOS app里,你沒有使用64位編碼對(duì)回單數(shù)據(jù)進(jìn)行編碼,

b.沒有有效的回單,你的回單大概使用了等號(hào)隔開鍵和值,用分號(hào)隔開了關(guān)鍵字。

c.有效的回單使用冒號(hào)來隔開鍵和值,用逗號(hào)隔開關(guān)鍵字,

下表是有效的回單樣本

receipt: { “signature” : “…”, “purchase-info” : “…”, “pod” : “…”, “signing-status” : “…” }

-我更新了使用In-App Purchase的iOS app,如何對(duì)它進(jìn)行測試呢(iOS)?

不管更新后的app是否正確執(zhí)行地了In-App Purchase,如果你要測試的話就按照以下步驟:

通過Ad Hoc Distribution方式安裝原始app。

通過Ad Hoc Distribution方式安裝更新后的app來驗(yàn)證它是否完全覆蓋了原始的app。

試著從更新后的app中執(zhí)行In-App Purchase。

-我應(yīng)該使用哪個(gè)url核實(shí)回單(receipt)(iOS)?

在sandbox環(huán)境測試app時(shí)使用 sandbox URL ,當(dāng)應(yīng)用處于審核狀態(tài)時(shí)也可以使用這個(gè)URL:https://sandbox.itunes.apple.com/verifyReceipt 使用產(chǎn)品 URL 一旦你的app上架App Store,你就要用產(chǎn)品URL: http://buy.itunes.apple.com/verifyReceipt

-如何核實(shí)receipt(iOS)?

第一次一般使用產(chǎn)品的URL核實(shí)收據(jù)。如果你收到一個(gè)21007狀態(tài)代碼,那么接下來要用sandbox URL。當(dāng)app處于測試狀態(tài)或者在sandbox環(huán)境下進(jìn)行檢測,或者上架App Store,你可以使用這種方法,從而避免在URL之間進(jìn)行切換,

注明:21007 狀態(tài)碼表明receipt是一個(gè)sandbox receipt。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容