我在Google Play商店中成功获得应用付费,并希望将此应用更新为免费应用内购买。使用应用内购买将已付费的Android应用更改为免费应用
我刚刚完成开发应用程序的免费版本,该应用程序允许用户限制访问,然后可以使用应用内购买系统解锁。
我遇到的问题是,所有为应用付费的现有用户都会升级,然后再次被提示重新付费,当然这是不对的。
是否有任何方法检查用户的购买历史记录,确定他们之前是否为应用付费过,并在没有应用内购买的情况下解锁额外功能?
感谢您的任何帮助。 刘易斯
我在Google Play商店中成功获得应用付费,并希望将此应用更新为免费应用内购买。使用应用内购买将已付费的Android应用更改为免费应用
我刚刚完成开发应用程序的免费版本,该应用程序允许用户限制访问,然后可以使用应用内购买系统解锁。
我遇到的问题是,所有为应用付费的现有用户都会升级,然后再次被提示重新付费,当然这是不对的。
是否有任何方法检查用户的购买历史记录,确定他们之前是否为应用付费过,并在没有应用内购买的情况下解锁额外功能?
感谢您的任何帮助。 刘易斯
它已经过了一年,所以OP可能不需要这个,但万一别人发生在这一个...
你可以处理这个几个方法。很明显,您的新应用内购买应用有一些业务逻辑来跟踪谁已付/未付款。所以这两种方式我看你能去这个问题如下:
理念1:
你可以做一个初步的更新您的付费应用程序,存储SharedPreference
或一些其他持久性应用程序(你可以存储versionCode,所以你知道你要升级什么,并且有业务逻辑)。然后更新到免费版本,并有免费版本检查您的共享偏好,并从“付费”versionCode更新做正确的事情。
理念2:
你可以保留两个独立的应用程序(有付费版本,并在应用内购买免费)和推送更新到付费版本有一个BroadcastReceiver
并没有真正除了听特定的意图之外别做任何事情,并进行应用内购买检查,看看是否有东西会接收到您的定制意图。如果您的旧付费版本存在,那么他们就会付钱,如果不是这样的话。 (如果他们支付的付费版然后卸载你就会有很明显的问题...)
理念3:
你可以保留两个独立的应用程序(有付费版本,并在 - 免费应用程序购买),并将更新推送到付费版本,只需发布Intent
以打开应用程序内购买应用程序(如果已安装)并附带一些特殊参数,让他们知道他们通过付费应用程序打开了应用程序,并执行正确操作把它们设置为在应用程序中支付它的东西。打开自己了一些检测问题,但...(可解,但那种笨重)
对于Google Play而言,支付应用程序或免费下载应用程序并无区别。例如,如果用户在免费下载应用程序的情况下下载应用程序,并且以后更改为付费应用程序,则该用户仍可以完全访问该应用程序,甚至可以在其他设备上下载该应用程序。
有一些跛变通为:
这就是说,请记住,许多游戏已经在一段时间后变得自由了。也许用户不会介意那么多。
您可以保留现有的付费版本并创建另一个免费版本。
如果您确实不想拥有2个版本,只需将其免费并告诉用户“如果您购买了付费版本,请与我们联系。我们会给你兑换代码解锁xxx'。
https://developer.android.com/distribute/tools/launch-checklist.html#decide-price
此链接似乎有关,希望它有助于
在谷歌Play上,您可以发布应用程序免费下载或定价。 Google Play中的任何Android用户均可下载免费应用。付费应用程序只能由位于支持付费下载的国家/地区的用户下载,并且可以在Google Play中注册一种付款方式,例如信用卡或Direct Carrier结算。
确定您的应用是免费还是付费很重要,因为在Google Play上,免费应用必须保持免费。
将应用程序作为免费应用程序发布后,无法将其更改为定价应用程序。不过,您仍然可以通过Google Play的应用内结算服务销售应用内商品和订阅。 如果您将应用作为定价应用发布,您可以随时将其更改为免费应用(但不能将其更改为定价)。您还可以销售应用内商品和订阅。 如果您的应用需要定价,或者您要销售应用内商品,则需要先设置Google Payments商家帐户,然后才能发布。
我觉得最简单的方法是使用密码
这给你的旧版本代码
SharedPreferences prefs = getSharedPreferences("Name_of_Prefs", MODE_PRIVATE);
int oldVersionCode = prefs.getInt("version_code", -1);
这给你的当前版本的代码theese行
int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(),0).versionCode;
现在你可以比较和做你想做的事情。不要忘记,每次 与这行代码后更新
prefs.edit().putInt(PREF_VERSION_CODE_KEY, currentVersionCode).commit();
你不能做到这一点 – Goofy
你能找到一个解决办法?我处于同一位置,可以通过应用结算方式免费获得付费应用 – abedfar