Метод ответа productsRequest не вызывается - PullRequest
16 голосов
/ 28 апреля 2010

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

- (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];
}

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

есть идеи по этому поводу? заранее спасибо

Ответы [ 4 ]

42 голосов
/ 28 апреля 2010

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

23 голосов
/ 22 мая 2012

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

Мой код был такой:

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

Но продукты делегатаRequest: 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:
}
7 голосов
/ 27 июня 2012

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

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

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

1 голос
/ 16 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...