在编写代码前,还需要去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]; } }
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一下。很多资料的