Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




我目前有一个应用程序的两个版本-一个带广告的免费版本和一个不带广告的付费版本。我收到用户的大量要求,以简化从免费版本到付费版本的过渡,我真的很想这样做。

一种方法是简单地删除免费版本,使付费版本免费,然后添加应用内购买以删除广告。

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

最佳答案

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

原因之一是,取决于您的应用程序支持的Android版本,多达10%的设备可能不支持应用程序内付款(例如,因为它们具有无法自动更新且可以自动更新的旧版Android Market)不支持IAB3)。这为保持付费版本提供了依据。

另外,如果用户将免费应用程序安装到不支持IAB3的设备上,那么您可以让您的应用程序检测到该情况,并提供指向付费版本的链接,以便他们在收到信号时作为备用(到IAB3)升级路径进行安装他们准备升级的应用程序。

而且,当然,如果您确实保留付费版本,则可以轻松地区分已付费用户和未付费用户。

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

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

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

最后,我不会太担心将安装分成两个APK,因为免费版本很可能会获得大部分份额,这仅仅是因为IAB升级过程很容易安装和尝试。无缝。

09-26 03:52