Я настроил свои приложения для iOS в покупках приложений на портале Apple, я запрашиваю свои продукты, используя SKProductsRequest
и правильно получая, а затем сохраняя их в NSMutableDictionary
.
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse*)response
{
NSLog(@"%@", @"AppStore: Accepted");
for (SKProduct * s in response.products) {
NSLog(@" [%@]", s.productIdentifier);
}
[productsById removeAllObjects];
for (SKProduct * product in response.products) {
[productsById setObject:product forKey:product.productIdentifier];
}
[request release];
}
Однако при попытке совершить покупку строка addPayment
выдает 'NSInvalidArgumentException', reason: '*** setObjectForKey: key cannot be nil'
-(void)purchase:(NSString *)productId {
SKProduct *selectedProduct = [productsById objectForKey:productId];
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct: selectedProduct];
payment.quantity = 1;
[[SKPaymentQueue defaultQueue] addTransactionObserver: self];
[[SKPaymentQueue defaultQueue] addPayment: payment]; //<- this line throws an exception
}
Я проверил, что productId является действительным продуктом и что payment.quantity> 0, как говорится в документации Apple. Я пробовал и в Симуляторе, и в iPad с теми же результатами. Заранее благодарю за любую помощь.