#iphone #in-app-purchase
#iPhone #покупка в приложении
Вопрос:
Я написал следующий код.
Но когда я выполняю этот код, я получаю журнал, в котором отображается «нет доступных продуктов». Я не могу найти причину.
-(void)viewDidLoad {
[super viewDidLoad];
if ([SKPaymentQueue canMakePayments])
{
SKProductsRequest *productsRequest=[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.cmp.name.prdt"]];
productsRequest.delegate=self;
[productsRequest start];
}
else {
NSLog(@"Parental Control are enabled");
}
}
-(IBAction)btnpurchase
{
NSString* isPurchased = [[NSUserDefaults standardUserDefaults] stringForKey:@"com.cmp.name.prdt"];
if ([@"purchased" compare:isPurchased]==NSOrderedSame)
{
///do some task
}
else
{
SKPayment * payment=[SKPayment paymentWithProductIdentifier:@"com.cmp.name.prdt"];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
SKProduct *validProduct=nil;
int count=[response.products count];
if (count>0) {
validProduct=[response.products objectAtIndex:0];
}
else if(!validProduct)
{
NSLog(@"no products available");
}
}
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaaction in transactions)
{
switch (transaaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue]finishTransaction:transaaction];
[[NSUserDefaults standardUserDefaults] setObject:@"purchased" forKey:@"com.cmp.name.prdt"];
[[NSUserDefaults standardUserDefaults] synchronize];
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue]finishTransaction:transaaction];
break;
case SKPaymentTransactionStateFailed:
if (transaaction.error.code!=SKErrorPaymentCancelled) {
NSLog(@"Error encountered");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaaction];
break;
default:
break;
}
}
}
Может ли кто-нибудь помочь мне в этом?
Комментарии:
1. [ответ.количество товаров] возврат НУЛЯ означает, что вы получаете нулевую информацию о продукте в массиве products.
2. Если вы не получаете никаких продуктов, убедитесь, что вы все правильно настроили в Центре разработки iOS и iTunes Connect. Также дважды проверьте, что вы передаете правильные идентификаторы продукта в запросе продуктов.
Ответ №1:
Вы можете попробовать следующий фрагмент кода // МЕТОД ДЕЛЕГИРОВАНИЯ ЗАПРОСА ПРОДУКТА
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"The product request didReceiveResponse :%@",[response description]);
NSLog(@"The products are :%@",[response.products description]);
NSLog(@"The invalidProductIdentifiers are:%@",[response.invalidProductIdentifiers description]);
NSArray *products=response.products;
for(SKProduct *currentProduct in products){
NSLog(@"THE Product price is :%@",currentProduct.price);
NSLog(@"THE Product description is :%@",currentProduct.localizedDescription);
NSLog(@"THE Product title is :%@",currentProduct.localizedTitle);
NSLog(@"THE Product's product identifier is :%@",currentProduct.productIdentifier);
}
}
При этом В ОКНЕ КОНСОЛИ БУДУТ СОХРАНЕНЫ СВЕДЕНИЯ О ПРОДУКТЕ, ЗАРЕГИСТРИРОВАННОМ В iTunes CONNECT
Ответ №2:
К сожалению, Apple не отвечает никакой полезной информацией о том, почему ваши покупки не отображаются. Я бы прошел через этот контрольный список. В моих приложениях несколько дней ничего не работало, затем внезапно начало работать. Убедитесь, что ваша финансовая информация верна.