android - 向早期购买者提供免费功能

标签 android in-app-purchase licensing

我在 Google Play 商店中有一款付费应用。我正在考虑降低该应用程序的价格(某种程度上;不是完全免费)并将其中一项功能作为单独的应用程序内购买提供。

如果我那样做,我就不想把这个功能从已经购买它的任何人手中抢走。

有什么方法可以确定用户购买我的应用程序的日期,或者他们购买的应用程序的原始版本,或者类似的东西?我想说类似的话,“如果应用是在价格变化之前(按日期或按版本),他们应该免费提供该功能;否则,需要 IAP 才能解锁该功能。”

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

最佳答案


Unfortunately for your customers, this is impossible. There is no API call or anything else to Google Play where you can get the time on which the app was bought.

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

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




您可以采取的解决方法:

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

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

Warning: This system could be abused by changing the time on the device

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


<强>2。给用户免费 key

您可以通过邮件或推送通知为每个使用 atm 应用程序的用户提供免费 key


<强>3。立即解锁应用内购买

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

如果您使用某种持久性存储,您或许可以破解此问题。

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

这可能只有在首选项没有“默认”值时才有效,我不完全确定在 xml 中设置默认值是否会将其标记为已包含。

如果您有任何 Assets 转移到 SD,或任何类似的一次性设置,您可以做类似的事情。只需在第一次执行之前检查它是否已经完成。

如果您使用的是 SQLite 数据库,您可以增加数据库版本并在 onUpgrade() 中标记为“已付费”(如果来自当前版本(或更早版本))。

不过这里也有一些陷阱。例如,如果以前的付费客户在安装新版本之前完全卸载,或者它在新设备上。因此,您应该:


<强>4。提供支持

在您的应用程序的关于或常见问题解答部分以及在您的新版本首次运行时设置一个支持邮件地址,如果客户因为未为他们解锁新功能而遇到任何问题,可以使用该地址。

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




就像我说的,这些想法是解决方法,但我不知道有任何“官方”方法来检查应用程序安装是升级还是初始安装。

Your best option may be a combination of those four.




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


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

关于android - 向早期购买者提供免费功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32303995/

相关文章:

java - 显示条件运算的结果?

android - 单击按钮后将一张图片替换为另一张图片

android - 类和 Activity 通过接口(interface)进行通信

google-chrome - Google 付款、Chrome 扩展应用内购买出现意外错误

licensing - 是否存在类似默认许可证的东西?

Android - 自定义许可服务器 - 这是否违反市场协议(protocol)?

android - 没有 "Apps using Usage Data"或 android.settings.USAGE_ACCESS_SETTINGS Intent 的设备

iphone - 有没有比使用 plist 保存应用内购买更安全的解决方案?

ios - 应用内购买 - 订阅 - 不基于 Apple Id

licensing - 在 Qt 中制作应用程序,在 LGPL 下,我可以出售它吗?