你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 實現iOS應用內購買的三個核心步驟

實現iOS應用內購買的三個核心步驟

編輯:IOS開發綜合

要把大象裝冰箱,總共分三步——宋丹丹

這篇文章不是一個應用內購買的完整教程,而是講述了內購買的核心編程步驟,以一個清晰簡潔的視角,幫助讀者理解應用內購買。編寫內購買代碼之前,需要在iTunes Connect中創建商品,方法請自行google。現在假設我們在iTunes Connect中創建了一個商品。

第一步,要從蘋果服務器獲得商品信息。

你說“我知道自己的商品信息”,不好意思,此步驟是必須的,後面會用到代表商品的變量。

if ([SKPaymentQueue canMakePayments])
    {
        SKProductsRequest *request = [[SKProductsRequest alloc]
                                      initWithProductIdentifiers:
                                      [NSSet setWithObject:productID]];//productID是一個NSString變量,可從iTunes connect查詢商品來獲得
        request.delegate = self;
        
        [request start];
    }

上面的代碼創建並發送了一個獲得商品信息的請求。蘋果的服務器返回商品信息時,會觸發代理方法。
#pragma mark -
#pragma mark SKProductsRequestDelegate

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    
    NSArray *products = response.products;
    
    if (products.count != 0)
    {
        _product = products[0];//_product是一個SKProduct變量
    } else {
        NSLog(@"Product not found");
    }
    
    products = response.invalidProductIdentifiers;
    
    for (SKProduct *product in products)
    {
        NSLog(@"Product not found: %@", product);
    }
我們在代理方法中將商品信息放入了一個SKProduct變量_product。

第二步,創建並發送支付請求。

首先,要為交易隊列找一個觀察者。

[[SKPaymentQueue defaultQueue]
     addTransactionObserver:self];

然後創建一個交易,並將其加入交易隊列。

SKPayment *payment = [SKPayment paymentWithProduct:_product];
[[SKPaymentQueue defaultQueue] addPayment:payment];

第三部,處理交易結果。
#pragma mark -
#pragma mark SKPaymentTransactionObserver

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:
                //購買成功,在這寫入後續代碼
                [[SKPaymentQueue defaultQueue]
                 finishTransaction:transaction];
                break;
                
            case SKPaymentTransactionStateFailed:
		//購買失敗,在這寫入後續代碼
                [[SKPaymentQueue defaultQueue]
                 finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
            {
		//在這寫入恢復內購買的代碼
                [[SKPaymentQueue defaultQueue]
                 finishTransaction:transaction];
                break;
            }
            default:
                break;
        }
    }
}

當蘋果的服務器處理完交易請求後,就會將交易結果發回來,並調用上面的方法。

內購買的基本步驟到此結束。雖然還有許多事要做,比如保存購買結果,恢復購買結果等等。這些內容請查閱蘋果官方文檔。當你理解了基本步驟後,就如同蓋房子打好了地基。後面可能還會遇到各種問題,但你都會循序漸進的將它們解決。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved