您可以选择希望您的应用程序何时以及何时检查其许可证,并且可以完全控制其处理响应,验证签名的响应数据以及实施访问控制的方式。
来自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次,而不必付费,但这可能超出了大多数用户的技术能力。