покупка непотребляемого продукта в приложении

#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 не отвечает никакой полезной информацией о том, почему ваши покупки не отображаются. Я бы прошел через этот контрольный список. В моих приложениях несколько дней ничего не работало, затем внезапно начало работать. Убедитесь, что ваша финансовая информация верна.