IAP

IAP 类型

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

购买流程

  1. 载入商品 ID

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

_productsRequest = [[SKProductsRequestalloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequeststart];
  1. 呈现商店
  2. 发布支付请求
    一旦用户选择了购买的条目,你发布一个支付请求到内购 API。它会自动弹框,类似「你确定要购买吗?」
SKPayment * payment = [SKPayment paymentWithProduct:skProduct];
[[SKPaymentQueuedefaultQueue] addPayment:payment];
  1. 处理交易结果
- (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;
        }
	} 
}
  1. 解锁内容
  2. 完成交易
    必须告诉内购 API 你完成了交易,否则它会认为没有结束而一直尝试完成交易。
[[SKPaymentQueuedefaultQueue] finishTransaction: transaction];