您的位置:首页 > 移动开发 > IOS开发

实现iOS应用内购买的三个核心步骤

2014-02-23 16:40 471 查看
要把大象装冰箱,总共分三步——宋丹丹

这篇文章不是一个应用内购买的完整教程,而是讲述了内购买的核心编程步骤,以一个清晰简洁的视角,帮助读者理解应用内购买。编写内购买代码之前,需要在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;
}
}
}


当苹果的服务器处理完交易请求后,就会将交易结果发回来,并调用上面的方法。

内购买的基本步骤到此结束。虽然还有许多事要做,比如保存购买结果,恢复购买结果等等。这些内容请查阅苹果官方文档。当你理解了基本步骤后,就如同盖房子打好了地基。后面可能还会遇到各种问题,但你都会循序渐进的将它们解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: