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

koc*_*ier 8 java android donations

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

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

在Android中实现这个有什么"最佳实践"吗?

谢谢!

dav*_*ino 8

就在这里.这是应用内结算.:-)

*因主持人评论而编辑.

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

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

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

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

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


gwv*_*eri 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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 1)国家限制与付费应用程序IIRC相同.请参阅https://www.google.com/support/androidmarket/developer/bin/answer.py?&&answer=1153481.2)如果您在不受支持的国家/地区,则不能在市场中销售东西.查看我们本周接受的新条款.3)您的基本代码可以更轻,但所需的整个代码(基本+第二个应用程序)将更大,相信我.从我们使用这种方法的日子开始,我就这样做了.4)你需要在市场上维护两倍的应用程序,要注意的评论/评论内容的两倍,维护和分离的销售报告的两倍. (2认同)