Я установил приложение iOS в приложениях для покупок на портале Apple, Я прошу использовать свои продукты с помощью SKProductsRequest
и правильно получаю, а затем сохраняю их в NSMutableDictionary
.SKPaymentQueue addPayment выбрасывает исключение
-(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, в качестве документации яблока говорит. Я пробовал как в симуляторе, так и в iPad с такими же результатами. Заранее благодарим за любую помощь.
Я дважды проверил это, на всякий случай, и я думаю, что я его выделяю. Я делаю это в 'init' method' productsById = [[NSMutableDictionary alloc] init]; ' Я действительно попытался полностью удалить словарь' productsById', вызвав 'addPayment' с помощью' SKPayment', созданного из последнего объекта в 'response.products' внутри метода' productsRequest: didReceiveResponse: 'с теми же результатами, что и раньше. Спасибо, в любом случае! – user2250746