The default ServerManagedPolicy
that Google provides in their License Verification Library relies on the server responses to determine the license revalidation interval. This results in requiring a revalidation every few days, in perpetuity. This is not only a nuisance to users, it can be a serious problem for users who go extended periods with no connectivity. (We just had an inquiry from a user who expects to be without Internet connectivity for several weeks, which is what motivates this question.)
In summary, I'm looking for an algorithm that will accomplish two things:
ServerManagedPolicy
;In an answer to this question the suggested policy algorithm is to ignore the times provided in the response from Google's server and instead to use a LICENSED expiration period of about a month, with license checks being attempted every few days (to extend the expiration period if a LICENSED response is received).
While this approach partially addresses the first goal, it still requires users to be connected once a month while using the app, so it would not work for (at least one of) our users.
The following algorithm accomplishes the first goal, but I don't know about the second. Any comments pointing out weaknesses of this algorithm, or suggestions for another approach, would be welcome.
Additional points:
ServerManagedPolicy
).In regards to piracy, there's always going to be a risk, nothing you do will prevent it completely.
As opposed to other risks, you risk upsetting your customers with an app they can't use.
I would expect a lot of 0* reviews from unhappy customers who can't even use an application they paid for as it's been disabled, whereas the people who got the app for free will likely have no interruptions. It's like buying a dvd and getting your face full of copyright warnings, when the pirates receive uninterrupted viewing.
I would insist on a licensed response when purchasing the app, and not bother with the second response. If someone can find their way around one response, they will find their away around the second.
Edit: I agree with kcoppock that a licensed check 20 minutes after purchasing would cause the least interference to customers and avoid the refund bug you've mentioned