网站开发项目报告,代做网页制作网站,是在百度中建设网站?,证书查询网前言
如题的需求应该经常在开发被提到#xff0c;例如给客户体验3–5天的程序#xff0c;到期后使其不可使用#xff0c;或者几年的使用期限。这个功能常常需要使用到usb加密狗来限制#xff0c;当然这也的话就需要一定的硬件投入。很多临时提供的版本基本是要求软件来实现…前言
如题的需求应该经常在开发被提到例如给客户体验3–5天的程序到期后使其不可使用或者几年的使用期限。这个功能常常需要使用到usb加密狗来限制当然这也的话就需要一定的硬件投入。很多临时提供的版本基本是要求软件来实现这种时间的限制那就可以使用调用某个网络时间的接口来进行验证体验时间是否过期的判断如果过期了就进行强制退出。这个接口不一定需要联网可以让做后端的提供一个服务器时间的接口来实现也是可以的。本文实现该功能是通过某宝的时间戳调用接口这样的话这个功能的要求就是需要联通互联网。如果你的需要不联网也可以用本机系统时间来判断
DateTime da DateTime.Now;不过这样的话修改本机的系统时间是可以绕过这个验证的。
实现
接口地址采用了某宝的时间戳获取接口 http://api.m.taobao.com/rest/api3.do?apimtop.common.getTimestamp 无需任何传参直接get请求即可。 返回结果为
{api:mtop.common.getTimestamp,v:*,ret:[SUCCESS::接口调用成功],data:{t:1692946147402}}其中datat (1692946147402)就是时间戳将其转换为时间后即可进行判断。
这里在打包前进行一定的配置就是设定程序开始体验的时间以及有效的时长(天数和小时数)
[Header(开始时间)]public string StTimeStr 2023/7/4 00:00:00 ;[Header(有效期天数)]public float ValDays;[Header(有效期小时)]public float ValHours;DateTime StDt,EdDt;// Start is called before the first frame updatevoid Start(){DateTime da DateTime.Now;StDt DateTime.Parse(StTimeStr);EdDt StDt.AddDays(ValDays).AddHours(ValHours);}如下图的设置
这里的开始时间就是2023年8月26日的00点00分00秒然后有效的时间就是15天 12小时(这里也可以设天数为15.5具体看方便设置)。
接口调用成功后具体的时间判断如下 try{string str Encoding.UTF8.GetString(bytes);JsonData resp JsonMapper.ToObject(str);if (resp ! null resp.ContainsKey(data) resp[data].ContainsKey(t)){DateTime nowdt GetDateTimeMilliseconds(long.Parse(resp[data][t].ToString()));if (nowdt EdDt)isPassed true;}else {Debug.LogWarning(获取网络时间失败 resp[message]);}}catch (Exception e){Debug.LogWarning(获取网络时间异常 e);}finally{if (!isPassed){Debug.LogWarning(程序体验时间过期程序退出);Application.Quit();}//可间隔一定时间进行验证。//else// Invoke(PassCheck, 20f);}
上面的检测仅在启动的时候判定一次如果在程序运行中时过期程序仍能正常运行。如果想要到期后程序也会退出则需要一定时间间隔检查一次。