Question

I'm trying to follow this tutorial, but in the line:

int count = [response.products count];

i'm getting this error:

Property products not found on object of type 'SKProductsRequest *'

This is my code:

-(id)init
{

 if (self = [super init]) {

 NSLog(@"game store loaded");
 if ([SKPaymentQueue canMakePayments])
 {
 NSLog(@"can make payments");
 SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:@"teste2"]];
 //productsRequest.delegate = self;
 [productsRequest start];

 //start Buying/buy button
 SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"teste2"];
 [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
 [[SKPaymentQueue defaultQueue] addPayment:payment];
 }
 else {
 NSLog(@"Please enable In App Purchase in Settings");
 }
 }



 return self;

}


-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse: (SKProductsRequest *)response {
 SKProduct *validProduct = nil;
 int count = [response.products count];
 if (count > 0) {
 NSLog(@"%d products available", count);
 validProduct = [response.products objectAtIndex:0];
 } else if (!validProduct) {
 NSLog(@"No products available");
 }

}

-(void)paymentQueue:(SKProductQueue *)queue updatedTransactions:(NSArray *)transactions {
 for (SKPaymentTransaction *transaction in transactions) {
 switch (transaction.transactionState) {
 case SKPaymentTransactionStatePurchasing:
 //avisa usuario que o produto esta sendo comprado
 break;
 case SKPaymentTransactionStatePurchased:
 //faz alguma coisa quando o produto for comprado

 [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
 break;
 case SKPaymentTransactionStateRestored:
 [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
 break;
 case SKPaymentTransactionStateFailed:
 if (transaction.error.code != SKErrorPaymentCancelled) {
 NSLog(@"An Error Encoutered");
 }
 [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

 default:
 break;
 }

 }

}

@end
Was it helpful?

Solution

Your method signature is wrong, it should be:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response

(you have specified the response class as SKProductsRequest when it should be SKProductsResponse).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top