I've run into similar issues, and found that it's more reliable in terms of 
impact on the end user to implement a second level of state tracking 
separately from what Google Play returns. So, you might want to do that 
depending on what your license policy is.

On Monday, March 31, 2014 9:32:41 PM UTC-4, Ted Hopp wrote:
>
> We have an app that uses the following license policy:
>
>    - if a definitive response of LICENSED is stored in the app's 
>    preferences and has not expired, allow access.
>    - if a definitive response is not stored in the app's preferences, or 
>    if it has expired, or if the cached response is NOT_LICENSED, request 
>    a license check from the server.
>    - if a definitive response (LICENSED or NOT_LICENSED) is received, it 
>    is stored in the prefs, along with the license validity period returned by 
>    the server. Access is permitted if the definitive response is LICENSED.
>    - if anything other than a definitive response is received (airplane 
>    mode, server error, etc.), the last stored definitive response is used to 
>    determine access, even if expired. If no response is stored, allow access.
>
> (This is basically the same as the LenientPolicy described in this 
> thread<https://groups.google.com/forum/#!searchin/android-developers/%22NOT_LICENSED%22$20response/android-developers/Pg1R5COMLD8/mBiKJyUxp0MJ>.
>  
> We're aware of its weaknesses, but generally it works for us.)
>
> The problem is that we occasionally receive reports of customers being 
> denied use of the app due to a license problem. These are installations 
> that definitely should be receiving a server response of LICENSED. When 
> the problem happens, and when we've been able to obtain details, it always 
> turns out that the user's device was not fully connected. When full network 
> connectivity was restored, the app ran fine. Here's (part of) a report from 
> a customer who has been unusually helpful:
>
> I'm using an Acer Iconia A500 tablet, running Android 4.0.3, kernel 
> 2.6.39.4+. . . . So, I don't seem to be able to simulate it with airplane 
> mode on. I also tried turning airplane mode back off, and it works fine 
> right now. The situation where this happened to me it happened three 
> different times, it was during a reading group at another person's house, 
> and I don't have any access to their wifi network.  So, there was wifi in 
> the area, but I wasn't connected to any at all, but I wasn't on airplane 
> mode either. . . If it happens again, I will try to watch more closely and 
> take note of any network circumstances.
>
> We have not been able to reproduce the problem on either an emulator or on 
> our test devices. As far as I can tell from our code, our app will always 
> run unless it receives a response of NOT_LICENSED from the license 
> client. Our assumption had been that this was only possible if the 
> licensing client successfully contacted the license server and received a 
> response of NOT_LICENSED (or had an unexpired NOT_LICENSED server 
> response previously cached). But perhaps our assumption is wrong. Is there 
> any situation where the licensing client on the device will return a 
> response of NOT_LICENSED due to a communication problem (or any other 
> reason besides having received that response from the license server)? Is 
> there anything we could ask the customer to do that might help sort out 
> what's going wrong?
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to