Google Play的“市场许可检查”如何工作?


23

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

市场许可证检查

可以检查您是否从Market获得此应用程序的许可证

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


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

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

Answers:


18

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

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

因此,基本上是每当开发人员想要它时。我想最常见的检查时间是首次打开应用程序的时间。

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

  • 您的应用程序提供:它的程序包名称,一个后来用于验证来自服务器的任何响应的随机数,以及一个可以异步返回响应的回调。

  • Google Play客户端收集有关用户和设备的必要信息,例如设备的主要Google帐户用户名,IMSI以及其他信息。然后,它代表您的应用程序将许可证检查请求发送到服务器。

  • Google Play服务器会使用所有可用信息来评估请求,并尝试以足够的信任度建立用户身份。然后,服务器会根据您的应用程序的购买记录检查用户身份,并返回许可响应,Google Play客户端会通过IPC回调将该许可响应返回给您的应用程序。

所以:

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

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


在以下情况下会发生什么情况:付费应用程序未在其第一版本中实现许可证检查库,但在其第二版本中实现了许可证检查库。第一版本的买家在更新到第二版本时会被视为经过身份验证的用户吗?
Mehul Joisar'Mar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.