iOS应用程序开发之内购
Posted jzssuanfa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS应用程序开发之内购相关的知识,希望对你有一定的参考价值。
- 内购简单介绍
- 配置iTunes Connect
- iosclient开发工作
一、内购简单介绍
二、配置iTunes Connect
三、iOSclient开发
// 1) 实例化产品请求 SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:identifiers]; // 2) 设置代理 [request setDelegate:self]; // 3) 启动请求 [request start];
提示:
1. 实例化请求时。必须指定有效的identifiers集合。之所以如此处理。主要是为了确保提交的内购商品真的通过了苹果的审批,处于可用状态!
2. 要想获取到准确的可用产品集合。须要通过代理方法实现
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
3. 越狱用户无法測试内购,可是能够购买
2⃣️购买产品
1. 内购的交易过程是通过SKPaymentTransactionObserver监控的。因此须要为IAPHelper加入交易观察者:
// 加入交易观察者对象 [[SKPaymentQueue defaultQueue]addTransactionObserver:sharedInstance];
2. 因为发起交易须要使用SKProduct对象。因此须要使用字典记录全部可用的商品
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⃣️验证购买(通常交由server来做)
- 接收ios端发过来的购买凭证。
- 推断凭证是否已经存在或验证过,然后存储该凭证。
- 将该凭证发送到苹果的server验证,并将验证结果返回给client。
- 假设须要。改动用户对应的会员权限。
考虑到网络异常情况。server的验证应该是一个可恢复的队列。假设网络失败了,应该进行重试。
与苹果的验证接口文档在这里。
简单来说就是将该购买凭证用Base64编码,然后POST给苹果的验证server,苹果将验证结果以JSON形式返回。
苹果AppStore线上的购买凭证验证地址是https://buy.itunes.apple.com/verifyReceipt ,測试的验证地址是:https://sandbox.itunes.apple.com/verifyReceipt
4⃣️恢复购买——恢复用户购买过的全部商品
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
以上是关于iOS应用程序开发之内购的主要内容,如果未能解决你的问题,请参考以下文章