我已经在 Google Play 商店发布了一个完全免费的应用程序。
由于该应用程序比我想象的更受欢迎,因此我决定在使用它之前锁定一些功能并要求应用内计费。但是,我希望所有现有用户继续享受免费的高级功能。
所以,我想到了以下几点:
- 免费上传带有应用内计费的版本,以便现有用户免费“购买”它。
- 在一定时间后开始对这些物品收费,但由于他现有的用户已经拥有高级物品,他们不会受到伤害。
有没有办法让一些用户“免费”获得物品?在应用内计费文档中写道,所有应用内计费项目都必须有一个价格。
我已经在 Google Play 商店发布了一个完全免费的应用程序。
由于该应用程序比我想象的更受欢迎,因此我决定在使用它之前锁定一些功能并要求应用内计费。但是,我希望所有现有用户继续享受免费的高级功能。
所以,我想到了以下几点:
有没有办法让一些用户“免费”获得物品?在应用内计费文档中写道,所有应用内计费项目都必须有一个价格。
谷歌没有直接的方法可以做到这一点。您将有 2 个测试用例:-
user-id
的,并且当您在应用程序中实现应用程序内时,将此用户 ID 发送到您的服务器。案例 1:- 如果与 id 匹配,您的服务器会将其与现有数据库匹配,并返回成功消息。
案例 2:- 对于带有此用户 ID 的新用户,您的应用程序应将购买令牌发送到您的服务器进行验证,并在验证购买后,您的服务器应发送成功消息。
常见任务:- 当您的应用程序启动时,您应该始终调用 restoreTransaction() 之后,您将从 google 获得一个列表,其中包含有关已购买项目的信息,您将解锁该内容。确保您的应用程序中有服务器验证实施。
以下是您如何在不使用服务器的情况下部分完成您想要的事情:
使用新版本更新您的应用程序,该版本将向 SharedPreferences 写入唯一值。该值应该是设备唯一的 ID 的散列(或者至少,不会有很多其他设备共享)。该值应该相对唯一的原因是为了防止它在以后的用户之间共享。如果您希望它在重新安装后仍然存在,您还可以将其写入用户外部存储器的一个区域,该区域在安装您的应用程序时不会被删除。
等待足够长的时间,以便您当前的大多数用户都已更新到新版本。在此过程中,此阶段的任何新用户也将在其 SharedPreferences 中获得唯一值。
发布不写入唯一 ID的新版本,并且仅当ID 存在或用户已通过应用内计费支付时,才启用您想要收费的功能。
这并不完美,但它至少可以让您目前的大多数用户继续访问这些功能。
我不知道这是否会违反您与 Google Play 的协议,您需要自己检查该问题。您向现有用户展示该应用程序是免费的,而现在希望对其某些功能收费这一事实可能被视为一种虚假陈述,除非您是现有用户的祖父,而我刚刚概述的方法并不能保证所有现有用户都将被成功授予访问权限。
请注意,在另一个需要使用您自己的服务器的答案中提交的方法似乎存在这些相同的问题,因为您需要发布具有与您的服务器通信的代码的应用程序的新版本,并且无法强制您当前的用户在特定的时间间隔内更新到新版本。否则,由于开发人员通常不知道免费应用程序的用户,您将如何在服务器数据库中收集标识当前用户的唯一 ID?
一种更简洁的方法是添加与现有功能紧密集成的新功能,使它们更有价值,并使使用旧功能输入的任何内容更有价值。您可以继续免费提供现有功能,但对新功能收费。
通过采用这种方法,不会剥夺当前用户的功能,并且您还可以向当前用户(而不仅仅是新用户)收取增值功能的费用。使用这种方法不仅可以让您的用户更满意,而且还可能为您带来更多回报,因为您将拥有整个当前用户群作为潜在的付费客户。
此外,您可能会认为您的应用程序目前的受欢迎程度很可能是由于您现在想要收费的功能。因此,一旦这些功能不再免费,您可能无法吸引持续不断的新用户。
虽然对于下载量很大的应用程序不可行,但截至 2016 年 1 月,您可以为每个应用程序每季度最多授予 500 个促销代码。
我看到这是一个非常古老的线程,并且接受的答案已经过时。现在有一个官方的解决方案。
谷歌Promotional Codes
在几年前推出了这正是您正在寻找的。您可以在 Play 管理中心的 下创建促销代码Your App -> User Acquisition -> Promotion
。
您可以使用促销活动通过促销代码免费为用户提供付费应用或应用内产品。您可以创建促销活动来奖励忠实粉丝、获取新用户并与以前的用户重新建立联系。了解更多。