Let’s say I launched the product in January. Right now is July and I have a bunch of users who tried Trial but never actually bought the software. I want to allow them to use the Trial again (think of it as of amnesty).
Is there a way to do this remotely (i.e. not through the SDK “Reset” function call)?
I tried deleting the Trial record from the Product->Trial Activations section, but looks like this does not affect the end-user.
Ok, I see that once trial record is deleted from the server side the SDK allows me to Activate Trial on that machine again.
However, I expected a bit different flow.
User launches the app for the very first time.
The IsTrialGenuine() SDK method returns LA_FAIL, so I display the “Try our app for free” button in UI.
For the next few days the IsTrialGenuine() returns LA_OK and GetTrialExpiryDate() returns valid remaining days.
Once trial ends, the IsTrialGenuine() returns LA_TRIAL_EXPIRED, so I will no longer show the “try our app for free” button in UI
In e.g. 6 months I want to give users a chance to use Trial again, so I remove ALL trial records on the server side (using WebAPI).
However, the IsTrialGenuine() on users’ machines still return LA_TRIAL_EXPIRED, so the “Try our app for free” remains hidden per my logic.
So I guess I should either implement something on my own backend to determine whether to show/hide the “Try our app for free” button or always show this button (which is a bad UX for me).
Can you confirm please that returning LA_TRIAL_EXPIRED from the IsTrialGenuine() call is expected even when the trial activation is removed from the server-side? Or am I missing something?
The function IsTrialGenuine() does not synchronize with Cryptlex servers directly. Instead, it locally checks the trial activation status on the client side. As a result, if there are any modifications made to the trial like removing the trial entirely from the server-side or extending the trial duration, these changes will not automatically be reflected in the client-side application.
To ensure that the changes get reflected on the client-side application, it is necessary to implement a mechanism to call the ActivateTrial() function. By invoking this function, the client-side application can communicate with the Cryptlex servers and obtain the most up-to-date trial status.
Can you confirm please that returning LA_TRIAL_EXPIRED from the IsTrialGenuine() call is expected even when the trial activation is removed from the server-side?
Yes, IsTrialGenuine() will return LA_TRIAL_EXPIRED even if the trial activation is removed from the server side as this function checks the trial activation info locally.
Hi @AntonS is your issue resolved by calling ActivateTrial() to get updated trial status?
I am having the same issue and it seems ActivateTrial() isn’t a perfect solution: