Reset Verified Trial remotely

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.

Hi Anton,

Once the trial activation is deleted from the server side ask your customers to activate the trial again.

Regards,
Ahmad.

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.

  1. User launches the app for the very first time.
  2. The IsTrialGenuine() SDK method returns LA_FAIL, so I display the “Try our app for free” button in UI.
  3. For the next few days the IsTrialGenuine() returns LA_OK and GetTrialExpiryDate() returns valid remaining days.
  4. Once trial ends, the IsTrialGenuine() returns LA_TRIAL_EXPIRED, so I will no longer show the “try our app for free” button in UI
  5. 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).
  6. 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?

Thanks,
Anton

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: