IAP

IAP 类型

  • 非消耗型:指那些用户只用购买一次的东西,比如关卡。
  • 消耗型:可以进行重复购买的东西,比如金币等。
  • 自动更新的订阅:自动更新的订阅允许你周期性的对用户收费,不过目前只能用于报纸或杂志型 app。
  • 免费订阅:与自动更新订阅类似,但它是免费的,只用于杂志应用。
  • 非自动更新订阅:比如允许用户在一周内访问特定的功能。

购买流程

  1. 载入商品 ID

  2. 请求产品信息。
    接下来,App 应该能连接到 App Store,得到你在 iTunes Connect 设置好的产品信息了。你将会通过再设置好的委托回调里的一个特殊对象 SKProduct,得到所有的信息。

_productsRequest = [[SKProductsRequestalloc] initWithProductIdentifiers:productIdentifiers];  
_productsRequest.delegate = self;  
[_productsRequeststart];


3. 呈现商店
4. 发布支付请求
一旦用户选择了购买的条目,你发布一个支付请求到内购 API。它会自动弹框,类似「你确定要购买吗?」

SKPayment * payment = [SKPayment paymentWithProduct:skProduct];  
[[SKPaymentQueuedefaultQueue] addPayment:payment];


5. 处理交易结果

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction * transaction in transactions) { 
        switch (transaction.transactionState) {
        case SKPaymentTransactionStatePurchased:
            [selfcompleteTransaction:transaction];
        case SKPaymentTransactionStateFailed:
            [selffailedTransaction:transaction];
        break;
        case SKPaymentTransactionStateRestored:
        break;
            [selfrestoreTransaction:transaction];
        default:
        break;
        }
    } 
}


6. 解锁内容
7. 完成交易
必须告诉内购 API 你完成了交易,否则它会认为没有结束而一直尝试完成交易。

[[SKPaymentQueuedefaultQueue] finishTransaction: transaction];