Доставка автообновляемых подписок для iOS

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

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

Это поведение, похоже, не задокументировано Apple, может ли кто-нибудь, у кого есть опыт, подтвердить это или нет?

Очевидно, что можно обнаружить, что срок действия подписки истек, а затем предложить пользователю возможность проверить статус своей подписки и восстановитьCompletedTransactions, что приведет к новой подписке, но мне просто интересно, делаем ли мы что-то не так, или это поведение нормальный.

Спасибо.


person Roger    schedule 13.09.2011    source источник


Ответы (1)


да. Это то, что я испытал также. Прежде чем я продолжу, ознакомьтесь со следующими сообщениями о том, почему вы можете отказаться от автоматического продления подписки:

Когда ваше приложение становится активным, это, по-видимому, заставляет App Store отправлять любые новые квитанции об автоматическом продлении подписки в ваше приложение. Но не стоит полагаться на это. И вам не нужно restoreCompletedTransactions получать последние квитанции.

Вы можете увидеть еще один из моих ответов для более подробной информации по этому вопросу. То, что вы должны делать (основываясь на документации Apple и некоторых экспериментах), — это хранить квитанции на вашем сервере. Затем, когда вы хотите проверить, была ли подписка человека продлена автоматически, следуйте процедуре Apple для подтверждение одной из этих квитанций в iTunes. Apple ответит информацией об этой квитанции, а также последней квитанции в этой подписке. Если он отличается от того, который вы отправили, вы знаете, что произошло автоматическое продление.

person Andrew    schedule 17.01.2012
comment
Эндрю, как насчет случая, когда у меня нет сервера, а вместо этого мое приложение отправляет квитанцию ​​приложения прямо в Apple, чтобы получить обновленную квитанцию ​​о подписке в приложении... Просто чтобы посмотреть, не отменил ли пользователь подписку. - person MiMo; 17.07.2014
comment
@MiMo В этом случае в вашем приложении я бы дождался истечения даты / времени истечения срока действия, а затем отправил подтверждение в Apple и посмотрел, ответит ли он новой квитанцией. Если это так, вы можете расширить использование добавленных функций для пользователя. Если это не так, то пользователь отменил свою подписку в какой-то момент в течение последнего периода. Невозможно определить, отменил ли пользователь подписку, пока не закончится текущий период и не появится новая квитанция. Пользователь мог отключить автоматическое продление, но его текущий цикл все равно будет завершен. - person Andrew; 20.07.2014
comment
Спасибо, @Andrew, это то, что я на самом деле делаю, иногда я действительно получаю квитанции, срок действия которых истекает раньше даты покупки. Каждый раз, когда вы отправляете квитанцию, вы получаете ее от [[NSBundle mainBundle] appStoreReceiptURL]; или вы получаете ее оттуда один раз, сохраняете в NSUserDefaults и просто используете данные NSUserdaults для запроса квитанции Apple в следующий раз? - person MiMo; 21.07.2014
comment
На самом деле @MiMo, поскольку я проверяю со своего сервера, я использовал фиксированный URL-адрес, указанный в документах, поэтому я не уверен в процедуре проверки с устройства. - person Andrew; 23.07.2014