大约一个月前,我在Google Play上购买了一款名为Whale Trail的游戏。今天,当我尝试在地铁上玩游戏时,它要求验证游戏的许可证,但没有这样做(因为地铁上没有互联网连接),因此关闭了游戏。到家后,我看了看游戏的“权限”标签,看到了以下内容:
市场许可证检查
可以检查您是否从Market获得此应用程序的许可证
看来这是Google Play内建的功能。所以我的问题是,这种“许可证检查”如何工作?应用程序多久使用一次此“功能”电话回家来验证我确实不是盗版这些开发人员应用程序的海盗?
大约一个月前,我在Google Play上购买了一款名为Whale Trail的游戏。今天,当我尝试在地铁上玩游戏时,它要求验证游戏的许可证,但没有这样做(因为地铁上没有互联网连接),因此关闭了游戏。到家后,我看了看游戏的“权限”标签,看到了以下内容:
市场许可证检查
可以检查您是否从Market获得此应用程序的许可证
看来这是Google Play内建的功能。所以我的问题是,这种“许可证检查”如何工作?应用程序多久使用一次此“功能”电话回家来验证我确实不是盗版这些开发人员应用程序的海盗?
Answers:
您可以选择希望您的应用程序何时以及何时检查其许可证,并且可以完全控制其处理响应,验证签名的响应数据以及实施访问控制的方式。
来自http://developer.android.com/guide/market/licensing/overview.html
因此,基本上是每当开发人员想要它时。我想最常见的检查时间是首次打开应用程序的时间。
您的应用程序不直接查询许可服务器,而是通过远程IPC调用Google Play客户端以发起许可请求。在许可请求中:
您的应用程序提供:它的程序包名称,一个后来用于验证来自服务器的任何响应的随机数,以及一个可以异步返回响应的回调。
Google Play客户端收集有关用户和设备的必要信息,例如设备的主要Google帐户用户名,IMSI以及其他信息。然后,它代表您的应用程序将许可证检查请求发送到服务器。
Google Play服务器会使用所有可用信息来评估请求,并尝试以足够的信任度建立用户身份。然后,服务器会根据您的应用程序的购买记录检查用户身份,并返回许可响应,Google Play客户端会通过IPC回调将该许可响应返回给您的应用程序。
所以:
显然,所有这些操作都是在线完成的,因此,如果您处于离线状态,则无法使用。如果我正在编写应用程序,那么我将拥有一个计数器,让该用户可以离线使用3次左右,然后才能上网获取许可证检查,以阻止发生在您无法玩的事情上离线。当然,如果有人浏览存储计数器的文件,他们可以在每次使用该值时将值改回3次,而不必付费,但这可能超出了大多数用户的技术能力。