8

我刚刚开发了一个我想免费分发的 Android 应用程序。

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

在 Android 中实现这一点是否有任何“最佳实践”?

谢谢!

4

3 回答 3

8

就在这里。这是应用内计费。:-)

*因版主评论而编辑。

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

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

  2. 由于您提供捐赠包,因此用户可以多次捐赠给定数量是合乎逻辑的。因此,您只需确保捐赠包(您在市场控制台中添加的产品)是不受管理的。

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

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

于 2011-11-23T18:30:33.340 回答
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;
}

附言。应用内结算不是那么容易集成,而且您的应用仅在支持应用内的国家/地区可见。在你的情况下这不值得。

于 2011-11-23T18:34:26.653 回答
3

您可以通过 Android Marketplace 使用应用内计费来完成此操作。还有很多应用程序提供免费版本和付费版本,其中付费版本的功能更多或广告更少。

于 2011-11-23T18:32:08.280 回答