为早期买家提供免费功能

时间:2015-08-31 04:25:06

标签: android in-app-purchase licensing

我在Google Play商店中有付费应用。我正在考虑降低该应用的价格(有些;并非一直免费),并提供其中一项功能,作为单独的应用内购买。

如果我这样做了,我不想把这个功能从任何已经购买它的人身上移开。

有没有办法找出用户购买我的应用程序的日期,或他们购买的应用程序的原始版本,或类似的东西?我想说的是,“如果应用程序在价格变化之前(按日期或按版本),他们应该免费提供该功能;否则,需要IAP来解锁该功能。”

例如,iOS确实有这样的功能;应用程序收据包含一个“originalVersion”字段,可用于控制对功能的访问。

2 个答案:

答案 0 :(得分:4)

  

不幸的是,对于您的客户来说,这是不可能的。 Google Play上有没有 API调用或其他任何内容,您可以在此处获得购买该应用的时间。

我知道存在android-publisher API,但它没有提供任何功能来检查。

您要使用的功能不是公开可用,仅在内部由Playstore使用!



您可以执行的解决方法:

<强> 1。获取应用安装的时间

首次启动时,您可以检查并解锁功能。

  

警告:通过更改设备上的时间可能会滥用此系统

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


2。为用户提供免费密钥

您可以通过邮件或推送通知为每个使用该应用的用户提供免费密钥


第3。立即解锁inapp购买

发布免费解锁inapp购买的应用更新。几周之后,您可以以较低的价格推销新版本,并解锁功能,就好像您当前的客户购买了您的扩展程序一样。

如果你正在使用某种持久性存储,你可能能够解决这个问题。

对于SharedPreferences,首次运行时,请使用SharedPreferences.contains()检查您的某个偏好设置。如果它包含它,则必须已安装该应用程序。如果没有,请设置另一个将用户标记为新的首选项,然后再设置一个,这样每次都不会进行检查。

这可能仅在偏好没有&#34;默认&#34;值,我不完全确定在xml中设置默认值是否会将其标记为包含。

如果您有任何资产转移到SD或任何类似的一次性设置,您可以执行类似的操作。在第一次这样做之前,请检查它是否已经完成。

如果您正在使用SQLite数据库,则可以增加数据库版本并标记为&#34;付费&#34;在onUpgrade()中,如果来自当前版本(或更早版本)。

但是,这里有一些陷阱。例如,如果之前的付费客户在安装新版本之前完全卸载,或者如果它在新设备上。出于这个原因,你应该:


4。提供支持

在应用的“约”或“常见问题解答”部分以及第一次运行新版本时,设置一个支持邮件地址,如果他们遇到任何问题,客户可以使用这些地址,因为新功能未针对他们解锁。

他们可以为他们的购买提供任何证明(账单)。



就像我说的那样,这些想法是解决方法,但我不知道任何&#34;官方&#34;检查应用程序安装的方法是升级或初始安装。

  

您最好的选择可能是这四种选择的组合。



仅供参考:我已经在Google Cloud Connect中打开了一项功能请求/想法,您可以投票:https://connect.googleforwork.com/ideas/9392(只有拥有付费Google商务帐户才能投票)


我希望这对你至少有所帮助。

答案 1 :(得分:-1)

据我所知,您可以做的最好的事情是找到它安装的日期。 http://developer.android.com/reference/android/content/pm/PackageInfo.html#firstInstallTime