IOS-приложение-покупка + виджет "Сегодня"

Итак, у меня есть приложение, для которого требуется подписка (через IAP), и он предоставляет виджет Today. Внутри виджета (а также в приложении) я использую RMStore для проверки поступления заявки в комплекте для активной подписки. Он отлично работает в песочнице, в том числе при установке через TestFlight. Но сегодня приложение было одобрено Apple, и как только я протестировал версию "жить в магазине", в то время как основное приложение увидело, что пользователь купил в квитанции приложения, Today Extension не читал квитанцию ​​о приеме, и таким образом не нашли подписки!

Оба расширения Today и основное приложение используют один и тот же код для чтения квитанции приложения и поиска информации о подписке. Почему он будет работать в основном приложении, но не в расширении? Это известная проблема? Это как-то связано с RMStore, а не с самим StoreKit? Есть ли что-то умное/различное, что я должен делать?

Я думаю, может быть, проблема связана с проверкой квитанции - например, что-то вроде идентификатора пакета в песочнице вместо App Store для расширения?

Это действительно разочаровывает, так как для меня нет возможности проверить какое-либо потенциальное решение без повторной отправки в App Store, а затем проверить его после его выпуска и вытащить из магазина, если он сломается, так как в противном случае у меня будет пользователи платят за то, чего они на самом деле не получают.

Ответ 1

Все квитанции (покупка приложения и покупка в приложении) хранятся в файле внутри пакета приложений. Расширение приложения находится в комплекте, который вложен в пакет приложений, поэтому я был бы удивлен, если он имеет доступ к файлу получения во внешнем пакете (но стоит проверить, вызвав appStoreReceiptURL).

Таким образом, информация о квитанции (то есть либо сама квитанция, либо какой-либо результат обработки квитанции) должна быть передана из содержащего приложения на расширение с помощью обычных средств, то есть с помощью общий контейнер и возможно координация файлов.