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

Вопрос относительно подписок с автоматическим продлением через приложение:

Я не понимаю, как поступить в случае, когда пользователь покупает несколько подписок разной продолжительности. Кажется, что Apple распознает, приобрел ли пользователь данный SKU (на основе идентификатора продукта), и предотвратит повторную покупку (в этом случае мое приложение получает событие неудачной транзакции), но если я предлагаю тот же контент, используя другой идентификаторы товаров имеют разную продолжительность, тогда пользователь потенциально может купить дважды или больше.

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

Должен ли я отслеживать приобретенные подписки по идентификатору транзакции и идентификатору продукта и рассчитывать окончательный срок действия? Это кажется сложным.


person TomSwift    schedule 17.08.2011    source источник
comment
Эта ссылка stackoverflow.com/questions/22680059 / может вам помочь.   -  person Arun Jain    schedule 27.07.2017


Ответы (4)


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

Остановите меня, если вы слышали это раньше.
Когда вы выбираете Auto-Renewable Subscriptions в iTunes Connect, вам предоставляется возможность добавить несколько длительностей с разными идентификаторами продукта к одной подписке Family. Apple не позволит пользователю приобретать подписку на несколько совпадающих сроков в рамках одной семьи. (Если вы используете несколько семейств в своем приложении, объясните причину, чтобы я мог дать вам рекомендации на основе этого).

Фактически, Apple не позволит пользователю складывать разные сроки подписки в одной семье.

Вот пример.
Я (как пользователь) загружаю гипотетическое приложение Acme и подписываюсь с подпиской на 1 месяц. Если я ничего не сделаю, моя подписка будет автоматически продлена в конце периода с другой подпиской на 1 месяц. И так далее.

Но вместо этого я возвращаюсь и покупаю подписку на 6 месяцев. Apple сообщит мне (с предупреждением), что моя 6-месячная подписка начнется после завершения моей текущей 1-месячной подписки, и хотел бы я продолжить. Если я скажу «да», Apple заметит это, но они не будут взимать с меня плату, пока не истечет мой текущий 1-месячный период.

Теперь, если я снова вернусь и куплю подписку на 1 год, Apple снова ответит предупреждением о том, что она начнется в конце моей текущей подписки на 1 месяц. Он не будет добавлен к предстоящей 6-месячной подписке. Он заменит его.

В сводке
Таким образом, у пользователя может быть только одна текущая подписка и одна предстоящая подписка (в пределах family. Вот почему вы используете семейство сроков действия продукта в рамках подписки. Если вы создаете несколько семейств подписок тогда они могут существовать одновременно, и вы потеряете эту защиту.

Если, как разработчик, вы хотите вручную продлить, сократить, отменить или объединить подписки, вам следует сделать это с помощью подписок без продления. И если вы прочитаете ссылку, которую я разместил вверху, вы поймете, что Apple может заставить вас сделать это.

person Andrew    schedule 17.01.2012
comment
Спасибо, Эндрю. Я разобрался во всем этом несколько месяцев назад и получил одобрение моего приложения с автоматическим продлением. Однако с тех пор меня попросили перейти на подписку без продления из-за изменения политики (grr ...). - person TomSwift; 23.01.2012
comment
@TomSwift, еще один поворот, с которым вы, возможно, столкнулись. Мое приложение снова было отклонено. Несмотря на то, что я реализовал Non-Renewable Subscriptions (NRS), как они просили, теперь они говорят, что им не нравится мое использование iCloud для синхронизации подписки на нескольких устройствах пользователя. Для тех, кто не знает, Apple требует, чтобы вы сделали этот тип синхронизации IAP на всех устройствах пользователя, но restore не работает с NRS, поэтому они хотят, чтобы вы реализовали необязательный механизм регистрации, чтобы пользователь мог войти в систему для получения функций, которые они уже приобрели в другом месте. - person Andrew; 24.01.2012
comment
@Andrew. Эй, ты можешь объяснить сценарий, в котором у меня две семьи говорят, что золото и платина, а пользователь хочет перейти от одной семьи к двум? Разрешено ли это из раздела управления подписками в магазине приложений или iTunes или это можно сделать только из приложения? - person Nitin; 23.11.2012
comment
@ Нитин, это хороший вопрос. Я какое-то время не в курсе об ARS, потому что я использую NRS, но я постараюсь ответить как можно лучше. Из вашего приложения пользователь может выбрать новую продолжительность в рамках данного семейства подписок. Они также могут начать новую подписку в новой семье. Но они не могут отменить подписку из вашего приложения. И я думаю, что если вам нужно, чтобы они сменили семью, им нужно будет отменить первую, иначе с них начнут взиматься плата за обе семьи. И я не думаю, что есть способ сказать Apple, что одна семья должна заменять другую. - person Andrew; 24.11.2012
comment
@ Андрей Да, вы правы. Но меня беспокоит то, что можно изменить продолжительность ваших подписок вне приложения, поскольку они перечислены в разделе управления подписками в приложении iTunes и App Store. Точно так же продукты других семейств, кроме той, на которую вы подписаны, также перечислены в разделе «Управление подписками»? Если да, то очевидно, что пользователь может начать новую подписку вне приложения? Как с этим справиться? Кроме того, знаете ли вы какое-либо приложение, которое имеет ANR для нескольких семейств, может быть одним из ваших творений :) - person Nitin; 26.11.2012
comment
@Nitin, я понимаю, о чем вы говорите. Я не знаю. Чтобы выяснить это, мне пришлось бы создать тестовый проект, поэтому я предлагаю вам это сделать. Я уверен, что пользователь может изменять продолжительность внутри семьи вне приложения (в разделе «Управление подписками»), но я не знаю, появятся ли в этом разделе и другие семейства. Это достаточно уникальный случай, и я был бы удивлен, если бы кто-нибудь получил ответ, не проверив его. К сожалению, я не знаю примеров приложений, которые можно было бы показать вам. В моем приложении используются подписки с продлением вручную, которые не управляются извне. - person Andrew; 27.11.2012
comment
@Andrew: Мы идем по тому же пути, то есть пытаемся и получаем отказ :) Спасибо большое за такие быстрые ответы, ты молодец \ m / - person Nitin; 27.11.2012
comment
Если пользователь подписывается, скажем, ежемесячно, а позже переходит на подписку на год, несмотря на предупреждение. В квитанциях будут отображаться как активные, так и ежемесячные. Как мы с этим справимся? - person iPP; 08.11.2016

попробуйте использовать MKStoreKit 4, он поддерживает автоматические возобновляемые подписки http://blog.mugunthkumar.com/coding/mkstorekit-4-0-supporting-auto-renewable-subscriptions/

person rkheik    schedule 17.08.2011
comment
По разным причинам я не использую mkstorekit. Во-первых, у меня другие требования к серверу, чем у их простого скрипта php. Также я не уверен, что они справятся с этим сценарием, о котором я спрашиваю. (кто-нибудь докажите, что я ошибаюсь, пожалуйста) - person TomSwift; 17.08.2011

Последнюю информацию можно найти на странице подписки Appstore. https://developer.apple.com/app-store/subscriptions/. Суть в том, чтобы использовать группу для определения нескольких каналов подписки.

Создание подписок

Пользователи могут покупать только одну подписку в группе подписок за раз. Если пользователи хотят иметь возможность покупать более одного типа подписки - например, для подписки более чем на один канал в потоковом приложении, - вы можете поместить эти внутриигровые покупки в разные группы подписок.

Обновления, более ранние версии и кросс-версии

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

person onmyway133    schedule 03.09.2018

Имея аналогичную проблему. Было бы одобрено приложение с двумя группами подписки (годовой и ежемесячной). Они автоматически продлевают подписки. У нас сотни пользователей, и они хотят, чтобы мы изменились, удалив группы подписок и создав новую. Можно ли создать новую группу и переместить в нее существующие продукты? Не уверен, что делать здесь и что будет дальше.

person kierandes    schedule 12.09.2018