IAP 类型
- 非消耗型:指那些用户只用购买一次的东西,比如关卡。
- 消耗型:可以进行重复购买的东西,比如金币等。
- 自动更新的订阅:自动更新的订阅允许你周期性的对用户收费,不过目前只能用于报纸或杂志型 app。
- 免费订阅:与自动更新订阅类似,但它是免费的,只用于杂志应用。
- 非自动更新订阅:比如允许用户在一周内访问特定的功能。
购买流程
-
载入商品 ID
-
请求产品信息。
接下来,App 应该能连接到 App Store,得到你在 iTunes Connect 设置好的产品信息了。你将会通过再设置好的委托回调里的一个特殊对象 SKProduct,得到所有的信息。
_productsRequest = [[SKProductsRequestalloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequeststart];
- 呈现商店
- 发布支付请求
一旦用户选择了购买的条目,你发布一个支付请求到内购 API。它会自动弹框,类似「你确定要购买吗?」
SKPayment * payment = [SKPayment paymentWithProduct:skProduct];
[[SKPaymentQueuedefaultQueue] addPayment:payment];
- 处理交易结果
- (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;
}
}
}
- 解锁内容
- 完成交易
必须告诉内购 API 你完成了交易,否则它会认为没有结束而一直尝试完成交易。
[[SKPaymentQueuedefaultQueue] finishTransaction: transaction];