实现iOS应用内购买的三个核心步骤
2014-02-23 16:40
471 查看
要把大象装冰箱,总共分三步——宋丹丹
这篇文章不是一个应用内购买的完整教程,而是讲述了内购买的核心编程步骤,以一个清晰简洁的视角,帮助读者理解应用内购买。编写内购买代码之前,需要在iTunes Connect中创建商品,方法请自行google。现在假设我们在iTunes Connect中创建了一个商品。
上面的代码创建并发送了一个获得商品信息的请求。苹果的服务器返回商品信息时,会触发代理方法。
我们在代理方法中将商品信息放入了一个SKProduct变量_product。
然后创建一个交易,并将其加入交易队列。
第三部,处理交易结果。
当苹果的服务器处理完交易请求后,就会将交易结果发回来,并调用上面的方法。
内购买的基本步骤到此结束。虽然还有许多事要做,比如保存购买结果,恢复购买结果等等。这些内容请查阅苹果官方文档。当你理解了基本步骤后,就如同盖房子打好了地基。后面可能还会遇到各种问题,但你都会循序渐进的将它们解决。
这篇文章不是一个应用内购买的完整教程,而是讲述了内购买的核心编程步骤,以一个清晰简洁的视角,帮助读者理解应用内购买。编写内购买代码之前,需要在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]; }
上面的代码创建并发送了一个获得商品信息的请求。苹果的服务器返回商品信息时,会触发代理方法。
<pre code_snippet_id="200787" snippet_file_name="blog_20140223_2_3429845" name="code" class="objc">#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); }
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>
我们在代理方法中将商品信息放入了一个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;
}
}
}
当苹果的服务器处理完交易请求后,就会将交易结果发回来,并调用上面的方法。内购买的基本步骤到此结束。虽然还有许多事要做,比如保存购买结果,恢复购买结果等等。这些内容请查阅苹果官方文档。当你理解了基本步骤后,就如同盖房子打好了地基。后面可能还会遇到各种问题,但你都会循序渐进的将它们解决。
相关文章推荐
- iOS应用内购买技术研究与实现-《骗经》电子书应用
- iOS应用内购买技术研究与实现-《骗经》电子书应用
- iOS核心动画--浅析三个动画的实现
- Next数组的实现步骤与代码,以及三个简单应用(包含KMP)
- iOS 应用内付费(IAP)开发步骤
- ios 应用UICollectionView实现瀑布流
- IOS 开发之应用唤起实现原理详解
- iOS开发UI篇—实现一个私人通讯录小应用【转】
- iOS应用内付费(IAP)开发步骤列表
- iOS 应用内付费(IAP)开发步骤
- 小胖说事15--------iOS 应用内付费(IAP)开发步骤(最全)
- iOS 代码实现获得应用的版本号(Version/Build)
- iOS 9应用开发教程之ios9中实现按钮的响应
- iOS 代码实现获得应用的版本号(Version/Build)
- iOS核心动画实现仿支付宝咻咻、雷达效果
- FTP应用实现步骤
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- iOS PUSH实现的简单步骤
- iOS应用内购买优化
- 在Web应用中使用Quatz实现任务调度步骤