Как перенести из платного приложения Android в приложение, оплачиваемое с помощью биллинга в приложении? - программирование
Подтвердить что ты не робот

Как перенести из платного приложения Android в приложение, оплачиваемое с помощью биллинга в приложении?

В настоящее время у меня две версии моего приложения на Android-рынке: платная и бесплатная. Но я хочу интегрировать биллинг в приложении в свое бесплатное приложение и взимать плату с подписчиков за более низкую цену, чем текущая цена платного приложения.

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

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

4b9b3361

Ответ 1

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

PackageManager manager = getPackageManager();
if (manager.checkSignatures("old.package.name", "new.package.name")
    == PackageManager.SIGNATURE_MATCH) {
    //full version
}

Ответ 2

Вы можете сохранить как свои платные, так и ваши версии free/IAB, но основывайте их как на одном и том же проекте библиотеки, так чтобы у вас был только один набор исходных файлов для поддержки. Проект библиотеки мог бы разблокировать все функции, доступные в настоящее время для ваших платных пользователей для платной версии (активированной, скажем, путем тестирования имени пакета приложения), и разблокировать те же функции для бесплатной версии только тогда, когда оплата была произведена через IAB.

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

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

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

Ответ 3

  • Увеличьте версию своей базы данных (например, 34 → 35)
  • В методе SqliteOpenHelper разблокируйте свои функции для предыдущих пользователей.

Пример:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    if(oldVersion != 0 and oldVersion <= 34){
       appConf.unlockAllFeatures()
    }
}
  • Если ваше приложение еще не использует базу данных, сделайте это в onCreate, но обратите внимание, что onCreate вызывается при первом вызове базы данных

Ответ 4

Исправьте меня, если я неправильно понял. Вы упомянули о подписке, что означает данные пользователя + база данных + дополнительная информация?

если ваше приложение не имеет базы данных или чего-либо еще для хранения пользовательских записей. Я предлагаю выпустить обновление для платного приложения и включить sharedpreference или обычный ini файл. используйте бесплатное приложение, чтобы прочитать тот же файл sharedpreferenece или свой собственный ini файл, чтобы прочитать настройки.

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