我已經在Apple門戶中配置了我的iOS應用程序在應用程序中的購買, 我要求我的產品使用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中獲得相同的結果。 在此先感謝您的幫助。
我再次檢查,以防萬一,我想我分配它。我試着用從上一個對象創建的'SKPayment'調用'addPayment'完全去掉'productsById'字典中的'productsById'字典在方法'productsRequest:didReceiveResponse:'中的'response.products'中,結果與以前相同。不管怎麼說,還是要謝謝你! – user2250746 2013-04-05 22:37:25