1

I currently have two versions of an application - a free version with ads and a paid version with no ads. I've had a ton of requests from users to ease the transition from the free version to the paid version, and I'd really like to do that.

One way of doing it is to simply remove the free version, make the paid version free and then add in-app purchasing to remove ads.

My only concern is this: How will I be able to determine which of my users have previously purchased the application? Is it possible to do with Google Play licensing?

4

2 回答 2

2

确实没有必要删除付费版本(或将其转换为免费版本)以通过 IAB 获得免费版本,并且有一些充分的理由将付费版本保留为与免费版本分开的应用程序。

一个原因是,根据您的应用支持的 Android 版本,多达 10% 的设备可能不支持应用内支付(例如,因为它们具有不自动更新的旧版 Android Market不支持 IAB3)。这为保留付费版本提供了一个论据。

此外,如果用户将您的免费应用安装到不支持 IAB3 的设备上,那么您可以让您的应用检测到这一点并提供付费版本的链接,以便他们在发出信号时将其安装为备用(到 IAB3)升级路径到他们准备升级的应用程序。

而且,当然,如果您确实保留了付费版本,那么区分已付费用户和未付费用户将毫无问题。

如果您决定保留付费版本,则只需将应用内计费添加到免费版本,即可升级到付费功能集。这将满足那些正在寻找一种比卸载免费应用程序并安装付费应用程序破坏性更小的升级路径的用户。

如果您还没有这样做,您可能希望创建一个项目库来保存您的应用程序的大部分功能,以便在您的免费版本和付费版本之间共享。您最终可能会将您的付费项目转换为该库,然后创建两个使用该库的付费和免费项目。如果您将两个版本组合成一个免费版本的动机之一是担心维护两个应用程序,那么使用项目库可以显着减少开销,尽管它不会为零。

在这方面,我发现在每个使用此类项目库的应用程序中创建一个活动很有用,该项目库继承自项目库中的主要活动。该主项目库活动可以是一个抽象类,在使用它的 APK 生成项目中继承自它的活动类提供某些方法;或者,某些方法可以以一种无害的方式默认(而不是定义为抽象的),然后在相应项目的派生类中被覆盖。这些覆盖可用于根据使用它的特定应用程序(例如,免费与付费)的要求来调整项目库的行为。您还可以覆盖预定义的方法,如 onCreate()、onResume() 等,以实现这些相同的目的,即区分各自之间的行为(例如

最后,我不会太担心在两个 APK 之间拆分您的安装,因为免费版本可能会获得最大份额,这仅仅是因为它可以轻松安装和试用,只要 IAB 升级过程是无缝的。

于 2013-06-12T21:01:31.347 回答
0

值得注意的是,您不能免费提供付费版本,它总是有价格标签。

我的建议是将 IAB 添加到免费版本中,以便用户可以从应用程序内升级。您还可以添加检查以查找设备上安装的付费版本的软件包名称。如果您找到它,那么您可以在免费版本中解锁该功能,而无需用户购买升级,因为您知道他们已经安装了付费版本。

唯一的问题是,虽然您可以保留正在安装的付费版本的标志,但如果他们在新设备上设置或恢复出厂设置,例如,当他们打开免费版本时,专业版的标志消失了,付费包不会安装,所以会提示他们再次付费升级。没有真正的方法可以解决这个问题。

于 2013-06-13T13:33:00.540 回答