Reputation: 8791
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
Upvotes: 0
Views: 312
Reputation: 119031
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
).
Upvotes: 2