在编写代码前,还需要去itunes connect配置APP和产品,然后还要在项目设置中做一些设置。这些我就不讲了 大家可以去google,资料很多的。
在IOS中如果你想购买物品的话,大概需要经过下面几步:
1.获取商店内商品信息
2.购买商品
如果你没有走第1步,就无法进行第2步的操作!
如果你在游戏中,想要做一个商店,然后希望玩家可以在商店中购买并付费给你们,那你首先需要显示一个商店给玩家 是吧?
如果去显示,这是程序员的工作,无非就是UI编程方面的工作。那么我们主要讲讲 如何获得商店内的物品信息,我们来看看下面的代码:
//获得商店信息
- (void)getShopInfo {
if ([SKPaymentQueuecanMakePayments] == YES) {//有权限购买
NSSet *set = [NSSetsetWithArray:[[NSArrayalloc] initWithObjects:@"1001",nil]];
SKProductsRequest *request = [[SKProductsRequestalloc] initWithProductIdentifiers:set];
request.delegate = self;
[request start];
}
}
因为用户是可以禁用内付费功能的,所以在使用IAP之前,先检测下是否禁用了。第一条语句就是实现这个功能:
if ([SKPaymentQueuecanMakePayments] == YES) {//有权限购买
上面代码中的 @"1001" 就是商品的ID,这个ID是我之前在 itunes connect中配置好的。我这里只查询1个商品的信息,所以只给了@"1001"。
如果你要获得商店内的信息,你需要实现这个协议:
@protocol SKProductsRequestDelegate <SKRequestDelegate>
@required
// Sent immediately before -requestDidFinish:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
@end
下面是我的实现,这里这是简单的把得到的信息显示出来而已:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
for (SKProduct *productin response.products) {
NSLog(@"商品标题:%@",product.localizedTitle);
NSLog(@"商品价格:%@",product.price);
NSLog(@"商品描述:%@",product.localizedDescription);
}
[selfbuyItemWithID:@"1001"];
}
接下来,我们看看如何购买商品:
//购买指定类型的商品
- (void)buyItemWithID:(NSString *)itemID {
SKPayment *payment = [SKPaymentpaymentWithProductIdentifier:itemID];
[[SKPaymentQueuedefaultQueue] addPayment:payment];
}
最后是购买结果的代理方法:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transactionin transactions) {
switch (transaction.transactionState) {
caseSKPaymentTransactionStatePurchasing://购买中
NSLog(@"购买中");
break;
caseSKPaymentTransactionStatePurchased://购买成功
NSLog(@"购买成功");
break;
caseSKPaymentTransactionStateFailed://购买失败
NSLog(@"购买失败");
break;
caseSKPaymentTransactionStateRestored://恢复商品
NSLog(@"恢复商品");
break;
}
}
}
这些只是一些核心的代码,其实如果你要做IAP功能,还需要一些更细致的代码,这些你们可以去google一下。很多资料的