2013-10-07 1 views
1

Я только что добавил iAP в своем приложении и получил ошибку.Не удается получить продукты SKProductsResponse: response.count = 0

- (void)getProductID { //runs on viewdidload 
    if ([SKPaymentQueue canMakePayments]) { 
     SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObjects:_productID, nil]]; 
     request.delegate = self; 

     [request start]; 
    } else { 
     [[[UIAlertView alloc] initWithTitle:@"Serpentine" message:@"Error: Could not connect to store. Try enabling in-app-purchases in settings." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 

     [self couldNotConnectToStore]; 
    } 

} 

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { 
    for (SKPaymentTransaction *transaction in transactions) { 
     switch (transaction.transactionState) { 
      case SKPaymentTransactionStatePurchased:[self unlockPurchase]; 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

      case SKPaymentTransactionStateFailed:NSLog(@"Transation Failed"); 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

      default:break; 
     } 
    } 
} 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
    NSArray *products = response.products; 

    if (products.count != 0) { 
     _product = products[0]; 
     _allowPurchase = YES; 
    } else { 
     [[[UIAlertView alloc] initWithTitle:@"Serpentine" message:@"Error: Could not connect to store" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];//this line of code runs a second after the controller opens 

//****************** error on line above ********************************* 

     [self couldNotConnectToStore]; 
    } 

    products = response.invalidProductIdentifiers; 

    for (SKProduct *product in products) { 
     NSLog(@"Product not found: %@", product); 
    } 
} 


- (IBAction)purchaseButtonPressed:(UIButton *)sender { 
    if (sender.tag == 1) { 
     //buy 20 
     _productID = @"com.piguygames.serpentine.buy20"; 

     SKPayment *payment = [SKPayment paymentWithProduct:_product]; 
     [[SKPaymentQueue defaultQueue] addPayment:payment]; 

    } else if (sender.tag == 2) { 
     //buy 45 
    } else if (sender.tag == 3) { 
     //buy 100 
    } else if (sender.tag == 4) { 
     //double 
    } else if (sender.tag == 5) { 
     //remove ads 
    } 
} 

Примечание: в контроллере есть и другой код, но я не думаю, что это релевантно.

Я добавил покупку приложения в iTunes connect, и он говорит «готов к отправке». Так должно быть хорошо здесь? Также я получил предупреждение на том же сайте, в котором говорится, что я должен представить новую версию своего приложения, чтобы работать в приложениях. Я решил, что сначала отправлю свое приложение и отключу iAP в приложении, а затем выпустим iAP в более позднем обновлении. Вам нужно отправить новую версию для тестирования iAP?

В любом случае, есть ли проблемы, которые вы можете увидеть до сих пор?

Пожалуйста, обратитесь за дополнительной информацией, если вам нужно больше, я начинаю с этой темы. Thanks

+0

Теперь я должен лечь спать, если есть какие-либо вопросы, которые могут быть в состоянии ответить на них примерно через 10 часов. Спасибо – Dylanthepiguy

+0

Вы уверены, что _productID вы переходите к initWithProductIdentifiers: не ноль? –

+0

Используете ли вы свою тестовую учетную запись в своем процессе? Вы должны - если не создать его в iTunes connect. По вашей обычной учетной записи это не сработает. –

ответ

0

Убедитесь, что в приложении «Настройки» вы вошли из любой учетной записи iTunes, если только она не является тестовой учетной записью, созданной в iTunes Connect. У меня недавно была такая же проблема, и я решил это.

+0

Я был выписан, и я сделал тестовую учетную запись, но тестовая учетная запись просит меня сделать обычную подписку на материал в магазине приложений – Dylanthepiguy

+0

Что это за режим песочницы, о котором я все время слышу? Как включить его? – Dylanthepiguy

+0

Вам не нужно включать среду Sandbox. Просто выйдите из магазина приложений, а затем после запуска приложения, когда он попросит учетные данные использовать учетные данные тестовой учетной записи. Для материала для регистрации попробуйте создать тестового пользователя из США, а затем попробуйте. Надеюсь, это поможет вам !!! –

Смежные вопросы