在Android市场发布免费和付费版本的应用程序的选项和最佳实践

8

我在我的安卓手机上安装了几个免费应用,然后后来“升级”到付费完整版。我最初的想法是创建两个具有相同包名的应用程序,以便安装一个覆盖另一个,但是市场中的应用程序必须通过包名唯一标识。

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


有一个更简单的答案,可以实现这个功能。https://dev59.com/ZnA75IYBdhLWcg3w3NFe#3069973 - rds
2个回答

6
在Google推出支持已授权应用程序之前,我们为我们的MixZing应用程序做了以下工作(请注意,这假定有服务器来执行许可证,但如果您愿意因盗版而失去大量收入,则不是必要的过程的一部分):
1. 创建一个“升级”应用程序,用户购买它只是为了获得升级许可证。它没有任何功能,只是启动您的免费应用程序的主要活动(可以选择使用额外内容指示它是从升级应用程序启动的)。
2. 当免费应用程序看到升级应用程序已安装时,请提示用户输入其升级许可证密钥。许可证密钥是Google Checkout订单号。
3. 当用户输入许可证密钥时,请让您的服务器验证许可证。您可以使用Checkout API 来完成此操作。
一些说明和警告:
- 由于市场的24小时取消政策,您必须准备好在他们第一次输入许可证时接受许可证(当然,如果那时是有效的订单号),然后在他们取消后将用户重置为免费版本。 - 您需要跟踪许可证并确保人们不分享它们。 - 我承认,在客户端和服务器上跟踪所有这些内容,正确地获取状态机等比我们最初想象的更多工作。 - 我们为用户提供了三天的宽限期,以输入其许可证密钥,在此期间,他们可以使用高级功能。 - 由于我们将许可证绑定到设备ID,因此在人们更换手机,刷写更改设备ID的ROM等情况下,涉及到相当多的支持。当然,您不必使您的许可证逐个设备,并且有一个自助选项来转移许可证将在我们完成这项工作时节省大量工作。
总而言之,如果Google支持已授权应用程序并从所有这些麻烦中拯救开发人员和用户,那将非常好!

有趣的方法,非常感谢您提供的所有细节。我将浏览API,看看有哪些可用于发现安装了哪些软件包以及其他“系统反射”宝石,因为我还没有使用过任何这样的东西。我要说的是,我“升级”的两个游戏都无缝完成了,所以我想它们正在执行某些操作,例如检查高级版本,触发意图并在自己上调用finish(其中一个实际上在恢复时崩溃,所以这种情况暴露了一些动态/黑客行为)。再次感谢。 - Rich

-2
每个应用程序必须有不同的包名,否则它被视为“升级”。市场对此规则非常严格(我是吃了亏才知道的)。
就个人而言,我喜欢在市场上看到一个免费的应用程序,它始终保持可用和免费。它可能缺少一些在应用程序的付费版本中展示的功能,但是一旦我熟悉了免费版本,我很愿意下载付费的应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接