2

Предположим, что пользователь iOS покупает подписку на автоматическое продление. Я знаю, что NSBundle.mainBundle().appStoreReceiptURL показывает какую-то цифровую квитанцию, которую я могу использовать для проверки покупки и продолжения подписки.Включает ли отказ iOS In-App-Purchase в NSBundle.mainBundle(). AppStoreReceiptURL

Затем после некоторого момента пользователь отменяет подписку.

Вопросы:

Когда пользователь отменяет подписку,

  1. Отражает ли NSBundle.mainBundle().appStoreReceiptURL, что отмена сразу?

Я скептически отношусь к этому вопросу, потому что NSBundle.mainBundle() используется, чтобы поднять то, что хранится локально в приложении. Если пользователь отменяет подписку, перейдя на настройки ОС, и она отправит уведомление определенного типа на Apple Server, Apple Server должен как-то уведомить об этом приложение.

  1. Если каким-то образом NSBundle.mainBundle().appStoreReceiptURL отражает отмену сразу. Как Apple это делает? Или мне нужно реализовать протокол, чтобы получить информацию об аннулировании?

  2. Если, на самом деле, мне нужно запустить протокол, выполняйте ли другие приложения каждый раз при запуске приложения?

ответ

2

Пользователь не отменяет подписку как таковой. Они выключают обновление, поэтому подписка не будет возобновлена ​​по завершении текущего периода. Если автоматическое обновление все еще включено, в квитанцию ​​будет добавлена ​​новая покупка в приложении в течение следующего периода, но теперь этого не произойдет, поэтому ваше приложение должно определить, что в настоящее время нет активной подписки, и удалить доступ к содержимое/функции по мере необходимости.

Apple может отменить подписку по запросу пользователя. В этом случае поле cancellation_date элемента приема покупки в приложении будет иметь значение, и ваше приложение должно обрабатывать его, как если бы покупка никогда не производилась.

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

+0

Как вы говорите, если пользователь отменил подписку на автоматическое продление, когда я обновляю свою квитанцию, NSBundle.mainBundle(). AppStoreReceiptURL покажет нуль? – shle2821

+1

Пользователь не может отменить подписку. Если они попросят Apple отменить подписку, то квитанция будет обновлена, чтобы соответствующий элемент покупки в приложении в квитанции имел «cancelation_date». 'NSBundle.mainBundle(). AppStoreReceiptURL' всегда имеет значение даже без покупок inapp, поскольку квитанция содержит сведения о самой покупке приложения (даже если она бесплатна) – Paulw11

+0

Я могу подтвердить, что если пользователь отменяет подписку, квитанция всегда – Andrea