Our license check flow is as follows:
- In our app we check if the user has an activated license (
IsLicenseGenuine). - If not, we fall back to any trial the user had activated before (
IsTrialGenuine). - If the trial has expired too, or if there is an error with the trial, or if no trial has been started yet, then we run our app in demo mode.
However, what to do if the user has started a trial, activated his license halfway that trial, then updated his hardware, and then deactivates his license? In that case IsTrialGenuine returns LA_E_MACHINE_FINGERPRINT. Right now we automatically fall back to demo mode (option 3) above since it’s an error, but we find this undesirable. We’re deliberating if we’d rather reset the trial in that case for a better user experience – I know that the worst thing that could happen is that users will be able to reactivate trials over and over by updating their hardware. Or maybe we could first read out / remember the remaining trial days and start a new trial with that many days left.
I could use LexActivator’s Reset function for this, but:
- This also resets any license state, which doesn’t matter since we’re in a trial state anyway.
-
Resetis labeled for development builds only. Is it safe to use in release builds in this way?