Предоставляйте бесплатные услуги более ранним покупателям

У меня есть платное приложение в Google Play Store. Я подумываю о снижении цены на это приложение (несколько, а не во всех бесплатных целях) и предлагая одну из функций в виде отдельной покупки в приложении.

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

Есть ли способ выяснить, была ли дата, когда пользователь купил мое приложение, или оригинальную версию приложения, которое они купили, или что-то в этом роде? Я хотел бы сказать что-то вроде: "Если приложение было до изменения цены (либо по дате, либо по версии), они должны иметь эту функцию бесплатно, в противном случае требуется, чтобы IAP разблокировал эту функцию".

Например, у iOS есть такая функция; квитанция приложения включает поле "originalVersion", которое может использоваться для контроля доступа к функциям.

Ответ 1


К сожалению для ваших клиентов это невозможно. В Google Play есть no API-адрес или что-то еще, где вы можете получить время, в которое было куплено приложение.

Я знаю, что существует API-интерфейс android-издателя, однако он не предлагает никаких функций для проверки этого.

Функции, которые вы хотите использовать, не являются общедоступными доступными и используются только в PlayStore!




Обходные пути, которые вы можете сделать:

1. Найдите время, когда приложение было установлено

При первом запуске вы можете проверить это и разблокировать функции.

Предупреждение: эту систему можно было бы злоупотреблять, изменив время на устройстве

long installed = context
.getPackageManager()
.getPackageInfo(context.getPackag‌​eName(), 0)
.firstInstallTime;


2. Дайте пользователям бесплатные ключи

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


3. Разблокируйте покупку inapp

Опубликуйте обновление приложения, которое бесплатно освободит покупку inapp. Через несколько недель вы можете использовать свою новую версию с более низкой ценой и просто разблокировать функции, как если бы ваши текущие клиенты купили расширение.

Возможно, вы сможете обойти это, если используете какое-то постоянное хранилище.

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

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

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

Если вы используете SQLite DB, вы можете увеличить версию DB и пометить как "оплаченную" в onUpgrade(), если она исходит из текущей версии (или ранее).

Здесь есть некоторые подводные камни. Например, если предыдущий платный клиент полностью удаляется до установки новой версии или на новом устройстве. По этой причине вы должны:


4. Обеспечить поддержку

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

Они могут предоставить любые доказательства (счета) для их покупки.




Как я уже сказал, эти идеи являются обходными решениями, но я не знаю никакого "официального" способа проверить, что установка приложения - это обновление или первоначальная установка.

Ваш лучший вариант может быть комбинацией этих четырех.




FYI: Я открыл функцию/идею функции в Google Cloud Connect для работы, которую вы могли бы проголосовать: https://connect.googleforwork.com/ideas/9392 (Вы можете голосовать только если у вас есть платная учетная запись Google Buisiness)


Надеюсь, это поможет вам хотя бы немного.