2013-06-12 65 views
1

我目前有两个版本的应用程序 - 一个免费版本的广告和一个没有广告的付费版本。我已经收到了很多用户的请求,可以简化从免费版本到付费版本的转换,我真的很想这样做。将付费应用程序更改为免费时的Google Play许可

这样做的一种方式是简单地删除免费版本,使付费版本免费,然后添加应用程序内购买去除广告。

我唯一担心的是:我如何能够确定哪些用户以前购买过该应用程序?是否可以使用Google Play许可?

+0

这个问题似乎是题外话题,因为它是关于授权,而不是编程。 –

+0

这绝对不是题外话题。这是他询问的Android SDK编程实现细节。 – Monstieur

回答

2

确实没有必要删除付费版本(或将其免费转换为免费版)以获得带有IAB的免费版本,并且有充分的理由将付费版本作为独立应用程序保留在免费版本中。

原因之一在于,根据您的应用所支持的Android版本,多达百分之十的设备可能不支持应用内付款(例如,因为它们具有旧版Android Market,不会自动更新并且不支持IAB3)。这为保持付费版本提供了一个参数。另外,如果用户将您的免费应用安装到不支持IAB3的设备上,那么您可以让您的应用程序检测该应用并提供指向付费版本的链接,以便作为备用(到IAB3)升级进行安装当他们发信号给应用程序他们准备升级时。

而且,当然,如果您确实保留付费版本,您将无法区分已经支付的用户和未支付的用户。

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

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

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

最后,我不会过分担心在两个APK之间拆分安装,因为免费版本可能会获得最大的份额,只需简单地安装和试用即可,只要IAB升级过程是无缝的。

0

可能值得注意的是,您无法使付费版本免费,它始终有一个价格标签。

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

唯一的问题是,虽然你可以坚持标志为正在安装的付费版本,如果他们安装在一个新的设备或工厂重置例如,当他们把免费版本,专业版的标志已经消失并且付费软件包将不会被安装,因此会提示他们再次付费升级。没有真正的方法来解决这个问题。

+0

有可能使免费的付费应用程序。你不能走相反的路。 –

+0

斯科特,回合你的最后一段......即使在工厂重置后 - 所有付费应用程序(如果它们是从GPlay购买的)都保留下来。所有的应用内购买也是如此。在某处存储秘密标志是一种老派的Windows方法。这是一个不好的方法。 – WindRider

相关问题