iOS應用程序開發以內購

  • 內購簡介
  • 配置iTunes Connect
  • iOS客戶端開發工做

1、內購簡介html

1⃣️經過蘋果應用程序商店有三種主要賺錢的方式:
–直接收費(與國內大部分用戶的消費習慣相悖,若是直接收費,不要設置爲6元)
–廣告(下降用戶體驗,在android系統很是多,在蘋果系統很是少)
–內購
2⃣️分類
•非消耗品(Nonconsumable)
–指的是在遊戲中一次性購買並擁有永久訪問權的物品或服務。非消耗品物品能夠被用戶再次下載,而且可以在用戶的全部設備上使用
•消耗品(Consumable)
–專爲支持可消耗的物品或服務設計的,消耗品購買不可被再次下載,根據其特色,消耗品不能在用戶的設備之間跨設備使用,除非自定義服務在用戶的帳號之間共享這些信息
•如下三種類別在iBooks中使用,目前iBooks不支持大陸市場
–免費訂閱(Free subscriptions)
–自動續費訂閱(Auto-renewing subscriptions)
–非自動續費訂閱(Nonrenewing subscriptions)

2、配置iTunes Connect
1⃣️建立本身的應用(無需累訴,沒有應用如何內購)
2⃣️建立應用內付費項目
 
以後設置好價格和Product ID以及購買介紹和截圖便可,這裏的Product ID是須要記住的,後面開發的時候須要。
3⃣️添加sandbox付費的測試用戶
4⃣️填寫相關的稅務,銀行,聯繫人信息

3、iOS客戶端開發
這幅圖很清晰的解釋了內購的整個流程,主要包括如下步驟(但願你們認真看這幅圖的細節,來理解內購的流程)
•請求有效的產品代號集合
•購買指定產品
•驗證購買
•恢復購買
1⃣️請求有效的產品代號集合
// 1) 實例化產品請求
SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:identifiers];
// 2) 設置代理
[request setDelegate:self];

// 3) 啓動請求
[request start];

提示:android

1. 實例化請求時,必須指定有效的identifiers集合,之因此如此處理,主要是爲了確保提交的內購商品真的經過了蘋果的審批,處於可用狀態!ios

2. 要想獲取到準確的可用產品集合,須要經過代理方法實現服務器

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response網絡

3. 越獄用戶沒法測試內購,可是能夠購買app

2⃣️購買產品ide

1. 內購的交易過程是經過SKPaymentTransactionObserver監控的,所以須要爲IAPHelper添加交易觀察者:測試

// 添加交易觀察者對象
[[SKPaymentQueue defaultQueue]addTransactionObserver:sharedInstance];

2. 因爲發起交易須要使用SKProduct對象,所以須要使用字典記錄全部可用的商品ui

NSMutableDictionary         *_productsDict;

3.交易隊列回調方法編碼

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions) {
        // 購買完成
            if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
            NSLog(@"購買完成 %@", transaction.payment.productIdentifier);

            [queue finishTransaction:transaction];
        } else if (transaction.transactionState == SKPaymentTransactionStateFailed) {
            if (transaction.error.code != SKErrorPaymentCancelled) {
                NSLog(@"交易失敗: %@", transaction.error.localizedDescription);
            }
        }
    }
}

 3⃣️驗證購買(一般交由服務器來作)

  1. 接收ios端發過來的購買憑證。
  2. 判斷憑證是否已經存在或驗證過,而後存儲該憑證。
  3. 將該憑證發送到蘋果的服務器驗證,並將驗證結果返回給客戶端。
  4. 若是須要,修改用戶相應的會員權限。

考慮到網絡異常狀況,服務器的驗證應該是一個可恢復的隊列,若是網絡失敗了,應該進行重試。

與蘋果的驗證接口文檔在這裏。簡單來講就是將該購買憑證用Base64編碼,而後POST給蘋果的驗證服務器,蘋果將驗證結果以JSON形式返回。

蘋果AppStore線上的購買憑證驗證地址是https://buy.itunes.apple.com/verifyReceipt ,測試的驗證地址是:https://sandbox.itunes.apple.com/verifyReceipt

4⃣️恢復購買——恢復用戶購買過的全部商品

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
相關文章
相關標籤/搜索