我在Android手机上安装了几个免费应用程序,然后“升级”到付费完整版。我做同样的第一直觉是创建两个具有相同包名的应用程序,以便安装一个覆盖另一个,但市场中的应用必须是包名称唯一。
为同一应用程序的免费版本和付费版本以及适用于此场景的任何命名约定或项目结构共享代码和资源的模式和最佳实践有哪些?
答案 0 :(得分:6)
在谷歌推出支持许可应用程序之前,这就是我们为我们的MixZing应用程序所做的事情(请注意,这假设服务器执行许可证,但如果您愿意失去实质性的话,它不是该过程的必要部分盗版收入):
创建一个人们购买的“升级”应用,以获得升级许可。它没有任何功能,只需启动免费应用程序的主要活动(可选择添加一个表示它是从升级应用程序启动的)。
让您的免费应用在看到已安装升级应用时,会提示用户提供升级许可证密钥。许可证密钥是Google Checkout订单号。
让用户在输入许可证时验证许可证。您可以使用Checkout API执行此操作。
一些注意事项和警告:
由于市场的24小时取消政策,您必须准备好在他们第一次进入时接受许可(当然假设它是有效的订单号)然后将用户重置为免费版本,如果他们取消。
您需要跟踪许可证并确保人们不共享许可证。
我承认在客户端和服务器上跟踪所有这些,让状态机正确等等比我们最初设想的更多。
我们为用户提供了三天的宽限期来输入他们的许可证密钥,在此期间他们使用了高级功能。
由于我们将许可证绑定到设备ID,因此当人们更换手机,刷新更改设备ID的ROM等时,转移许可证会有相当多的支持。当然,您没有为每个设备制作许可证,并且拥有自助服务选项来转移许可证将在我们完成后节省大量工作。
总而言之,如果谷歌支持许可应用程序并为开发人员和用户节省所有这些麻烦,那将是非常好的!
答案 1 :(得分:-2)
每个应用必须具有不同的包名称,否则它被视为“升级”。市场对这条规则非常黑白(我发现了很难)。
对于我自己而言,我希望以自由形式在市场上看到一个应用程序,该应用程序始终可用且始终免费。它可能缺少应用程序付费版本中显示的一些功能,我可能很乐意下载付费应用程序,一旦我熟悉了免费的应用程序。