大约一个月前,我在Google Play上进行销售时购买了一款名为Whale Trail的游戏。今天,当我尝试在地铁上玩游戏时,它要求验证游戏的许可证,但没有这样做(因为地铁上没有互联网连接),因此关闭了游戏。回到家后,我查看了游戏的“权限”选项卡,并看到了以下内容:


市场许可检查

可以检查您是否拥有此许可证Market


的应用程序似乎是Google Play内置的功能。所以我的问题是,这种“许可证检查”如何工作?应用程序多久使用一次此“功能”电话回家来验证我确实不是盗版这些开发人员应用程序的海盗?

评论

我不是专家,所以不会回答,但是这里有信息。快速而又肮脏:购买了应用程序,并向您授予了.apk文件的许可,它会通过网络检查许可。当时您可能无法使用该网络,并且开发人员没有缓存或处理任何内容。

@DoozerBlake那么答案是-“开发人员选择的频率”?我认为这是可以接受的答案

#1 楼


您可以选择希望您的应用程序何时以及何时检查其许可证,并且可以完全控制其处理响应,验证签名的响应数据以及实施访问控制的方式。


来自http://developer.android.com/guide/market/licensing/overview.html

所以基本上只要开发人员愿意就可以。我想最常见的检查时间是首次打开应用程序的时间。


您的应用程序不直接查询许可服务器,而是通过远程IPC调用Google Play客户端发起许可证请求。在许可请求中:


您的应用程序提供:程序包名称,稍后使用的现时值
用于验证来自服务器的任何响应以及对
可以异步返回响应的信息。
Google Play客户端收集有关
用户和设备的必要信息,例如设备的主要Google帐户
用户名,IMSI以及其他信息。然后,它代表您的应用程序将许可证检查请求发送给服务器。
Google Play服务器会使用所有可用信息来评估请求,并尝试以足够的可信度建立用户身份。然后,服务器会根据您的应用程序的购买记录检查用户身份,并返回许可响应,Google Play客户端会通过IPC回调将该许可响应返回给您的应用程序。






有关该应用程序,设备和用户的信息将转至Google的服务器。
然后Google会根据您知道为之付款的人的清单来检查您的姓名。 Google Play上的应用程序。 (它还可以根据它知道您已经从Google Play下载的应用程序列表来检查应用程序的名称)
如果它可以看到您已经从Google Play下载(并付费)了该应用程序,则它会向您发送回您具有许可证的信息,否则,它会告诉您您没有该许可证。

显然这是所有操作均在线完成,因此如果您处于离线状态,则将无法使用。如果我正在编写应用程序,那么我将拥有一个计数器,让该用户可以离线使用3次左右,然后才能上网获取许可证检查,以阻止发生在您无法玩的地方的事情离线。当然,如果有人深入研究存储计数器的文件,他们可以在每次使用它时将值改回3次尝试,而不必付费,但这可能超出了大多数用户的技术能力。

评论


在以下情况下会发生什么情况:一个付费应用未在其第一版本中实现许可证检查库,但在其第二版本中实现了许可证检查库。第一版本的买家在更新到第二版本时会被视为经过身份验证的用户吗?

–穆勒·乔萨
15年3月16日在9:43