2012-12-28 113 views
6

我在市场上有一个应用程序,成本0.99美元。我希望实施应用内结算功能,以便我可以免费提供该功能,并提供解锁某些功能的选项。我已经修改了代码以允许这样做。问题是......我如何标记已购买应用程序的1000多人已购买并解锁所有功能?从付费到免费w /应用内付费

+0

你有什么样的应用程序?它是一个离线应用程序?或者你使用互联网提供的一些服务?用户是否创建了一个帐户或用来使用您的应用程序? –

+0

这是一个离线应用程序。没有用户帐户或任何东西。 – Roger

回答

3

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

对于SharedPreferences,首次运行时,使用SharedPreferences.contains()检查您的首选项之一。如果它包含它,应用程序必须已经安装。如果没有,则设置另一个标记用户为新(免费)的偏好,并再设置一个偏好,以免每次都进行检查。

这可能只适用于如果首选项没有“默认”值,我不完全确定是否在xml中设置默认值将其标记为包含。

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

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

就像我说的,这是一个黑客攻击,但我不知道任何“官方”方式来检查应用程序安装是升级还是初始安装。虽然这里有一些陷阱。例如,如果以前的付费客户在安装新版本之前完全卸载,或者如果它在新设备上...

+0

这只是不会工作。考虑用户以前有付费版本的情况,但后来他将其删除。现在他想安装新的IAB版本。显然你的方法将他分类为初始使用,而他已经为此付费。 – abedfar

+0

@abedfar我在最后一句中明确提到了这种情况。正如我所说,这是一种破解,虽然事情在过去三年可能发生了变化,但我认为仍然没有一个好方法可以为所有用户做到“正确”。 – Geobits

+0

你是对的。您认为如果我将自己的付费应用更改为免费,我仍然可以获取Google授权服务器以区分已付费用户(我现在在付费应用中所做的事情)?我个人怀疑,因为只要我将我的付费应用程序更改为免费,那么Lic验证就变得毫无意义,Google应该为所有Lic查询返回true。 – abedfar

相关问题