将同一应用程序的免费和付费版本发布到Android Market的选项和最佳实践

将同一应用程序的免费和付费版本发布到Android Market的选项和最佳实践,android,google-play,Android,Google Play,我已经在我的Android手机上安装了几个免费的应用程序,然后“升级”到付费的完整版本。我这样做的第一个本能是创建两个具有相同软件包名称的应用程序,以便安装一个应用程序覆盖另一个应用程序,但市场上的应用程序必须在软件包名称上是唯一的 对于同一应用程序的免费和付费版本以及任何适用于此场景的命名约定或项目结构,共享代码和资源的一些模式和最佳做法是什么?每个应用程序都必须有不同的包名,否则将被视为“升级”。市场对这条规则的看法是黑白相间的(我很难找到答案) 就我自己而言,我喜欢在市场上看到一个免费的应

我已经在我的Android手机上安装了几个免费的应用程序,然后“升级”到付费的完整版本。我这样做的第一个本能是创建两个具有相同软件包名称的应用程序,以便安装一个应用程序覆盖另一个应用程序,但市场上的应用程序必须在软件包名称上是唯一的


对于同一应用程序的免费和付费版本以及任何适用于此场景的命名约定或项目结构,共享代码和资源的一些模式和最佳做法是什么?

每个应用程序都必须有不同的包名,否则将被视为“升级”。市场对这条规则的看法是黑白相间的(我很难找到答案)


就我自己而言,我喜欢在市场上看到一个免费的应用程序,它总是可以使用,而且总是免费的。它可能缺少付费版应用程序中提供的一些功能,一旦我熟悉了免费应用程序,我可能会很乐意下载付费应用程序

在谷歌推出对许可应用程序的支持之前,以下是我们为Mixing应用程序所做的工作(请注意,这假设一台服务器可以强制执行许可证,但如果您愿意因盗版而损失大量收入,则这不是该过程的必要部分):

  • 创建一个“升级”应用程序,人们购买它只是为了获得升级许可证。它没有任何功能,只是启动免费应用程序的主要活动(可选地附加一个额外的活动,表明它是从升级应用程序启动的)

  • 让您的免费应用程序在用户看到已安装升级应用程序后提示用户输入其升级许可证密钥。许可证密钥是Google签出订单号

  • 当用户输入许可证时,让服务器验证许可证。您可以使用Checkout API来实现这一点

  • 一些注意事项和注意事项:

    • 由于市场的24小时取消政策,当用户首次输入许可证时,您必须准备好接受许可证(当然,假设当时该许可证是有效的订单号),然后在用户取消时将其重置为免费版本

    • 您需要跟踪许可证并确保人们不会共享这些许可证

    • 我承认,在客户机和服务器上跟踪所有这些,正确使用状态机等等,比我们最初想象的要多

    • 我们给用户三天的宽限期来输入他们的许可证密钥,在此期间他们可以使用高级功能

    • 由于我们将许可证与设备ID绑定,因此在人们更换手机、闪存更改设备ID的ROM等时,在传输许可证方面有相当多的支持。当然,您不必为每个设备制作许可证,当我们完成这项工作时,拥有一个自助式许可证转让选项将节省大量工作


    总而言之,如果谷歌能够支持许可应用程序,让开发者和用户免于所有这些麻烦,那将是非常好的事情

    有趣的方法,非常感谢所有的细节。我将浏览API,看看在发现安装了哪些软件包以及任何其他可用的“系统反射”gem方面有哪些可用功能,因为我还没有使用这些功能。我要说的是,我“升级”的两款游戏做得很顺利,所以我想象他们正在做一些事情,比如检查高级版本,激发对它的意图,然后自己调用finish(其中一款实际上在简历上崩溃,所以这就透露出一些动态/黑客正在进行)。又是Thx。最近有一个答案似乎更容易实现