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