我已经成功实施了一种消费品,但我不知道如何实施多种消费品。我还想ADDD更ProductIdentifiers像com.lalala.20batteries,com.lalala.30batteries如何在应用程序内购买多种消费品
任何人都可以请给我一些导游
,这里是我的单消费品
@interface ViewController() <SKProductsRequestDelegate, SKPaymentTransactionObserver>
@end
@implementation ViewController
#define ProductIdentifier @"com.lalala.10batteries"
- (IBAction)taps10batteries{
NSLog(@"User requests to get 10 batteries");
if([SKPaymentQueue canMakePayments]){
NSLog(@"User can make payments");
SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
productsRequest.delegate = self;
[productsRequest start];
}
else{
NSLog(@"User cannot make payments due to parental controls");
}
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
SKProduct *validProduct = nil;
int count = [response.products count];
if(count > 0){
validProduct = [response.products objectAtIndex:0];
NSLog(@"Products Available!");
[self purchase:validProduct];
}
else if(!validProduct){
NSLog(@"No products available");
}
}
- (IBAction)purchase:(SKProduct *)product{
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
NSLog(@"received restored transactions: %i", queue.transactions.count);
for(SKPaymentTransaction *transaction in queue.transactions){
if(transaction.transactionState == SKPaymentTransactionStateRestored){
//called when the user successfully restores a purchase
NSLog(@"Transaction state -> Restored");
[self get10Batteries];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for(SKPaymentTransaction *transaction in transactions){
switch(transaction.transactionState){
case SKPaymentTransactionStatePurchasing: NSLog(@"Transaction state -> Purchasing");
break;
case SKPaymentTransactionStatePurchased:
[self get10Batteries];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSLog(@"Transaction state -> Purchased");
break;
case SKPaymentTransactionStateRestored:
NSLog(@"Transaction state -> Restored");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
if(transaction.error.code == SKErrorPaymentCancelled){
NSLog(@"Transaction state -> Cancelled");
//the user cancelled the payment ;(
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
- (void)get10Batteries{
NSUbiquitousKeyValueStore *cloudstore1 = [NSUbiquitousKeyValueStore defaultStore];
//load cloud integer
coins = [cloudstore1 doubleForKey:@"yo" ];
coins = [[NSUserDefaults standardUserDefaults]
integerForKey:@"com.lalala.10batteries"];
coins += 10;
[[NSUserDefaults standardUserDefaults] setInteger:coins
forKey:@"com.lalala.10batteries"];
[[NSUserDefaults standardUserDefaults] synchronize];
_coinLabel.text = [NSString stringWithFormat:@"%li", (long)coins];
//save icloud
[cloudstore1 setDouble:coins forKey:@"yo"];
[cloudstore1 synchronize];
}
- (void)viewDidLoad {
[super viewDidLoad];
NSUbiquitousKeyValueStore *cloudstore1 = [NSUbiquitousKeyValueStore defaultStore];
_coinLabel.text = [cloudstore1 stringForKey:@"yo" ];
NSUserDefaults *coinsdefaults = [NSUserDefaults standardUserDefaults];
if([coinsdefaults objectForKey:@"com.lalala.10batteries"] != nil) {
coins = [[NSUserDefaults standardUserDefaults] integerForKey:@"com.lalala.10batteries"];
coins = [coinsdefaults integerForKey:@"com.lalala.10batteries"];
_coinLabel.text = [NSString stringWithFormat:@"%li", (long)coins];
}
}
你有什么企图实现多种消费类产品?请做一些研究并付出努力尝试,我们很乐意帮助您进行调试。 – kittykittybangbang
我做了很多,但我仍然没有线索。例如,来自ray wenderlich的教程。他们使用 “的NSSet * productIdentifiers = [NSSet中setWithObjects: @” com.razeware.inapprage.drummerrage”, @ “com.razeware.inapprage.itunesconnectrage”, @ “com.razeware.inapprage.nightlyrage”, 零];”我只是不知道如何申请我的情况。请帮忙 – Sacha