Как я могу обрабатывать «обновления» контента для старых пользователей, не затрагивая новых пользователей? - PullRequest
3 голосов
/ 23 сентября 2011

Тема была слишком расплывчатой ​​- позвольте мне объяснить:

У меня есть приложение, в которое я включаю навигационную карту. Если кто-то купил приложение в 2011 году, он получил версию навигационной карты 2011 года.

Если кто-то приобретет приложение в 2012 году, он получит навигационную карту 2012 года.

Однако - тот, кто приобрел приложение в 2011 году, должен иметь возможность обновить свою диаграмму (до диаграммы 2012 года) на платной основе.

Как я могу надежно реализовать это?

Кроме того, если кто-то приобрел приложение в 2011 году, он должен не иметь возможность просто выгрузить приложение и перезагрузить его (из AppStore) и получить обновленный график бесплатно.

Это не так просто, как прямая "покупка в приложении" - потому что более новые покупатели уже получили бы обновление.

P.S. Прежде чем прокомментировать, как я несправедливо отношусь к существующим пользователям и т. Д., «Наказывая» их, обратите внимание, что это не так. Как и в случае со всеми навигационными диаграммами, покупка одной (электронной или бумажной) не обязательно дает вам права на все будущие бесплатно. Кроме того, у у меня есть провайдеры карт, которые я должен платить за обновления.

Ответы [ 7 ]

2 голосов
/ 23 сентября 2011

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

Этот процесс описан в документации Apple по покупке.

1 голос
/ 08 октября 2011

Кроме того, если кто-то приобрел приложение в 2011 году, он не сможет просто выгрузить приложение, перезагрузить его (из AppStore) и получить обновленный график бесплатно.

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

Это частично зависит от вашей цены.Если цена нового графика меньше или равна текущей цене приложения, то вы можете использовать один простой подход, если он приемлем для вас.Когда диаграмма 2012 станет доступной, отправьте приложение с картой 2011 года, уменьшите цену приложения на цену диаграммы 2012 года и сделайте диаграмму 2012 года доступной для всех пользователей в виде покупки в приложении.

Я не знаю, сколько стоит ваше приложение, но вот пример:

В настоящее время
Приложение с диаграммой 2011 года: 10 долларов США.

Диаграмма 2012 года становится доступной
Цена приложения для новых покупателей: $ 5.(Поставляется с графиком 2011 года).
Покупка в приложении к графику 2012 года: 5 долларов США.
Итого: 10 долларов США

1023 * Стоимость обновления приложения для существующих клиентов: 0 долларов США. * 1024Диаграмма 2012 года: $ 5.

Итого: $ 5

Новые клиенты платят ту же общую цену, что и раньше, существующие клиенты получают обновление со скидкой 50% по сравнению с прямой покупкой приложения.Если вы собираетесь это сделать, вам нужно будет четко указать в магазине приложений, что покупка за 5 долларов была предназначена для платформы, которая дала вам устаревшую диаграмму, и что для получения диаграммы 2012 года потребовалась покупка за 5 долларов в приложении., поскольку клиенты не привыкли совершать покупки в приложении сразу после покупки платного приложения.

В качестве альтернативы вы можете не проводить различий между обновлениями и новыми покупателями.В этом случае просто установите цену приложения с диаграммой 2011 года на 0 долларов США в магазине приложений и покупку в приложении за 10 долларов США, чтобы получить график 2012 года.Лично мне очень нравится этот подход, потому что, скачав бесплатное приложение, люди будут гораздо лучше понимать необходимость немедленной покупки в приложении, чтобы получить полную функциональность.

Это не так простокак прямая «покупка в приложении» - потому что новые покупатели уже получили бы обновление.

Это хитрый момент.Сценарий, который я обрисовал выше, не дает вам того, что вы хотели.

Я не претендую на то, чтобы иметь однозначное слово о том, что возможно с покупками в приложении, но я могу только понять, что вы моглидобиться этого - продать новое приложение для покупателей 2012 года, предлагая график 2012 года как покупку в приложении в приложении 2011 года для более ранних клиентов.Два приложения в магазине приложений.Не уверен, что Apple понравится.

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

if ((purchaseDate > 1-Dec-2011) || (hasPurchased2012ChartInApp == YES)) {  
    // give access to 2012 charts  
}  
else {  
    // only give access to 2011 charts  
}  

Но ... Я до сих пор не смог найти способ получить эту первоначальную дату покупки.

0 голосов
/ 12 октября 2011

То, что я хотел бы сделать для этого, упоминается в следующих шагах:

  • Я бы сохранял информацию о версии приложения (только на определенную дату или год) на стороне сервера.
  • Я бы отправил информацию об обновлении календарей с помощью push-уведомлений.
  • Когда пользователь регистрируется для push-уведомлений, я сохраню версию приложения вместе с UDID устройства и токены устройства в базе данных. (Вы также можете сделать это через какой-то веб-сервис, но я просто предлагаю свой путь).
  • Таким образом, я всегда могу проверить, взимать ли плату с пользователя, с помощью версии приложения пользователя и информации UDID устройства.
  • Если пользователь удаляет свое приложение, перезагружает его и снова регистрируется для push-уведомлений, я не буду обновлять информацию о версии его приложения.

Надеюсь, это поможет.

Спасибо

Madhup

0 голосов
/ 10 октября 2011

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

В настоящее время вы продаете навигационные карты 2011 года., который поставляется бесплатно при покупке приложения.Получив графики 2012 года, вы сохраните приложение более или менее на прежнем уровне, но добавите график 2012 года как покупку в приложении для новой версии.Вы также сделаете приложение бесплатным после того, как сделаете это обновление (в начале 2012 года) и сохраните диаграммы 2011 года в качестве образца (но, возможно, кто-то зависит от него, так что оставьте его там; также Apple требует, чтобы приложение было полезно один раззагружен, и это не требует покупки в приложении, чтобы быть полезным).

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

В последующие годы просто добавьте графики 2013 года, 2014 года и т. Д. В качестве покупок в приложении, а остальные оставьте прежними.Вы сказали в комментарии, что вы не хотите оставлять пробелы, поэтому оставьте там предыдущие карты.Надеюсь, это поможет.

0 голосов
/ 10 октября 2011

Вы можете отправить сообщение на ваш сервер при первом запуске приложения пользователем.Получите идентификатор устройства UUID/UDID и опубликуйте его на своем сервере.Я знаю, что для пользователя это может выглядеть как «кража» его личности (они говорят, что это плохо, но все еще используют Google).Вы можете сказать что-то вроде «эй, теперь это приложение проверит, разрешено ли вам получать бесплатный график», да / нет, это даже позволило бы им отказаться от отправки данных устройства.
На стороне сервера вы можете проверить, если этоновое устройство, а затем записать идентификатор в базу данных или что-то еще.Теперь, даже если пользователь перезагрузит приложение и снова свяжется с сервером, вы заметите, что идентификатор уже существует в вашей БД.

0 голосов
/ 06 октября 2011

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

0 голосов
/ 05 октября 2011

Значит, проблема в том, что у вас есть платное приложение, а не то, которое полностью полагается на покупку в приложении?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...