在Android中为用户解锁应用功能的最佳做法是什么?

时间:2011-11-23 18:22:55

标签: java android donations

我刚刚开发了一款Android应用程序,我希望免费发布。

为了能够为我的工作赚取一些钱,我想在应用中添加一些广告或通知。 如果用户决定捐出一些钱,他将使用某种解锁代码收到“捐赠”版本的解锁码。

在Android中实现此功能是否有“最佳做法”?

谢谢!

3 个答案:

答案 0 :(得分:8)

是的,有。这是in-app billing。 : - )

由于版主评论,

* 已修改。

阅读上面的链接后,您将了解可以实现各种软件包,这些软件包将提供所需的功能。在您的情况下,您将拥有用户将购买的“捐赠产品”(包)。这里需要解决一些细节,恕我直言:

  1. 大多数简单的应用程序分别是1美元,2美元,5美元,10美元和20美元,但当然也可以提供更高的价值。与多应用程序模式相比,这具有简化代码逻辑的优势,因为您管理一个代码分支内的所有内容,并且不需要使用不同的应用程序。

  2. 由于您提供捐赠套餐,因此用户可以多次捐赠该给定数量是合乎逻辑的。因此,您应该确保捐赠套餐(您在市场控制台中添加的产品)是 unmanaged

  3. 这是一般概念以及关于您的特定案例的两个主要问题。

    注意:我给出原始的,非常简单的答案的原因(仍然,我 不同意版主评论)是因为应用内计费很容易实现。真的没什么好说的。试试吧!

答案 1 :(得分:7)

我使用过这种方法:

  • 我发布了名为“我的应用程序”的免费Android应用程序
  • 我发布了一个名为“MyApp Donate”的空付费应用程序(它将只有一个活动,其中包含一些文字,例如“谢谢你捐赠...... bla bla”)

我们假设在“我的应用”中您将展示广告,您可以在某个位置使用“通过捐赠删除广告”按钮,将用户带到“我的应用捐赠”的市场页面。

在我的应用程序中,您决定是否必须根据已安装“我的应用程序捐赠”软件包的事实来显示或不显示广告。

听起来很复杂,但实施起来非常简单。 您可以使用以下代码检查是否安装了软件包:

public static boolean isPackageInstalled (final Context ctx, final String packageName) {
    boolean result = false;
    try {           
        final PackageManager pm = ctx.getPackageManager();
        final PackageInfo pi = pm.getPackageInfo(packageName, 0);
        if (pi != null && pi.applicationInfo.enabled)
            result = true;
    }
    catch (final Throwable e) {
        if (Dbg.IS_DEBUG) Dbg.debug("Package not installed: "+packageName);
    }

    return result;
}

PS。应用内结算并非易于集成,而且您的应用仅在支持应用内应用的国家/地区可见。在你的情况下,这是不值得的。

答案 2 :(得分:3)

您可以使用in-app billing通过Android Marketplace执行此操作。还有很多应用程序提供免费版本和付费版本,其中付费版本具有更多功能或更少的广告。