IAP - iOS
动态获取IAP价格。
动态获取IAP本地商店价格
获取美国商店、中国商店不同的价格
CN: ¥18
US: $2.99
请求
1
2
3
SKProductsRequest* productRequest=[[SKProductsRequest alloc] initWithProductIdentifiers:aProductSet];
productRequest.delegate=self;
[productRequest start];
代理处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
id Books = response.products;
CCArray *rets = CCArray::create();
for (SKProduct *curProduct in Books) {
//id & price
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:curProduct.priceLocale];
NSString *formattedPrice = [numberFormatter stringFromNumber:curProduct.price];
NSLog(@"%@:%@", curProduct.productIdentifier,formattedPrice);
rets->addObject(CCString::create([curProduct.productIdentifier UTF8String]));
rets->addObject(CCString::create([formattedPrice UTF8String]));
}
[request release];
}
购买IAP
初始化购买监听代理
1
2
3
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
在didReceiveResponse返回的product加入到购买队列中实现购买
1
2
3
4
SKPayment *payment = [SKPayment paymentWithProduct:curProduct];
[[SKPaymentQueue defaultQueue] addPayment:payment];
监听代理处理
1
2
3
4
5
6
7
8
9
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
- (void)paymentQueue:(SKPaymentQueue *)queue updatedDownloads:(NSArray *)downloads
@end
恢复IAP
代理如购买IAP实现
触发如下
1
2
3
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
本文由作者按照 CC BY 4.0 进行授权