Метод ответа на продуктRequest не вызывает

Я реализую при покупке приложения. Я отправляю запрос в магазин Apple через

- (void) requestProductData
{
 SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:
         [NSSet setWithObjects: featureAId,featureBId,nil]]; // add any other product here
 request.delegate = self;
 [request start];
}

метод ответа

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
 [purchasableObjects addObjectsFromArray:response.products];
}

не звонит вообще. только однажды он вызвал из десяти попыток, которые я пробовал.

любая идея относительно этого..? заранее спасибо

Ответы

Ответ 1

Попробуйте реализовать также метод - (void)request:(SKRequest *)request didFailWithError:(NSError *)error - могут быть некоторые ошибки при обработке ваших запросов.

Ответ 2

У меня была та же проблема, но в моем случае причина заключалась в том, что я использовал Автоматический подсчет ссылок, и я забыл сохранить запрос.

Мой код был похож:

- (void) requestProductData
{
    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
    request.delegate = self;
    [request start];
}

Но делегировать productsRequest: didReceiveResponse: никогда не вызывался.

Исправление:

@property (strong, nonatomic) SKProductsRequest *request;

- (void) requestProductData
{
    self.request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]];
    self.request.delegate = self;
    [self.request start];
    // you can nil request property in request:didFailWithError: and requestDidFinish:
}

Ответ 3

У меня была та же проблема. Я создал вспомогательный класс для обработки IAP и проверки продуктов. Наконец, я обнаружил, что экземпляр класса, который я создал, был выпущен до того, как ответ вернулся, поэтому методы делегата никогда не вызывались, потому что их больше не было.

Я решил свою проблему, сохранив экземпляр класса-помощника в классе, который я назвал его использованием @proprty (сильным, неатомным)...

Если вы не используете вспомогательный класс и не кодируете его в существующий класс, то ответ выше будет работать, сохраняя ваш SKProductRequest.

Ответ 4

У меня была аналогичная проблема (ошибка: не удается подключиться к iTunes Store). После обновления iTunes Beta до последней версии он снова начал работать.