Q: If a user goes offline for a period longer than the "License Interval Check" duration, we would expect the License Status to switch to "Expired" because the user cannot connect the internet for a "heartbeat". What is the recommended workflow that Zentitle suggests for situations like this, and if the user cannot get back onto the internet or hit the activation site?
A: If the user goes offline for longer than the License Check Interval, then the server license status will not change (as the client is still activated to use the license, but just needs a refresh).
On the Client side the license status changes to a negative value which signifies you should attempt to get the license again then recheck the license status afterwards.
When the client lease period has expired you will get this: ( [Description(“Product has expired”)] PROD_PRODEXPIRED = -1) which means the client should request the license again via the call NSLGetLicense I.e. in the Example apps : (application Load and Timer)
//Get License Status ShaferError = oShafer.GetLicenseStatus(ref LicenseStatus); if (ShaferError != (int)Shafer.ErrorCodes.FC_OK) { Shafer.ErrorCodes Err = (Shafer.ErrorCodes)ShaferError; string ErrMess = ""; Shafer.GetErrorMessage((int)Err, ref ErrMess); MessageBox.Show(ErrMess); Application.Exit(); } //SECURITY: If computer has been BACK Dated to get more time for the trial or Subscription then Exit Application if (LicenseStatus == (int)Shafer.LicenseStatus.PROD_BTCOUNTER) { Shafer.ErrorCodes Err = (Shafer.ErrorCodes)ShaferError; string ErrMess = ""; Shafer.GetErrorMessage((int)Err, ref ErrMess); MessageBox.Show(ErrMess); Application.Exit(); } //If License Status is negative then try to get license from server if (LicenseStatus <= 0) { LicenseStatus = GetLicenseFromServer(); } ShowLicenseStatus(LicenseStatus);
Please see example apps for more details.
If the client lease period expires and they can’t get back on the internet then a manual activation can be used, or if they can connect to the internet again later you will issue a NSLGetLicense call again to refresh the clients license to allow the app to continue.