当前位置: 首页 > news >正文

Unity3d C#实现调取网络时间限制程序的体验时长的功能

前言

如题的需求应该经常在开发被提到,例如给客户体验3–5天的程序,到期后使其不可使用,或者几年的使用期限。这个功能常常需要使用到usb加密狗来限制,当然这也的话就需要一定的硬件投入。很多临时提供的版本基本是要求软件来实现这种时间的限制,那就可以使用调用某个网络时间的接口来进行验证体验时间是否过期的判断,如果过期了就进行强制退出。这个接口不一定需要联网,可以让做后端的提供一个服务器时间的接口来实现也是可以的。本文实现该功能是通过某宝的时间戳调用接口,这样的话,这个功能的要求就是需要联通互联网。如果你的需要不联网也可以用本机系统时间来判断:

DateTime da = DateTime.Now;

不过这样的话,修改本机的系统时间是可以绕过这个验证的。

实现

接口地址采用了某宝的时间戳获取接口:
http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp
无需任何传参,直接get请求即可。
返回结果为:
在这里插入图片描述

{"api":"mtop.common.getTimestamp","v":"*","ret":["SUCCESS::接口调用成功"],"data":{"t":"1692946147402"}}

其中data>t (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);}

上面的检测仅在启动的时候判定一次,如果在程序运行中时过期,程序仍能正常运行。如果想要到期后程序也会退出,则需要一定时间间隔检查一次。

相关文章:

Unity3d C#实现调取网络时间限制程序的体验时长的功能

前言 如题的需求应该经常在开发被提到&#xff0c;例如给客户体验3–5天的程序&#xff0c;到期后使其不可使用&#xff0c;或者几年的使用期限。这个功能常常需要使用到usb加密狗来限制&#xff0c;当然这也的话就需要一定的硬件投入。很多临时提供的版本基本是要求软件来实现…...

常静相伴:深度解析C++中的const与static关键字

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…...

Linux入门之进程信号|信号产生的方式

文章目录 一、信号入门 1.linux信号的基本概念 2.使用kill -l 命令可以查看系统定义的信号列表 3.信号处理常见方式 二、产生信号 1.通过终端按键产生信号 2.通过调用系统函数向进程发信号 3.由软条件产生信号 4.硬件异常产生信号 1. /0异常 2.模拟野指针 一、信号入门…...

Unity中的数学基础——贝塞尔曲线

一&#xff1a;前言 一条贝塞尔曲线是由一组定义的控制点P0到 Pn&#xff0c;n1为线性&#xff0c;n2为二次......第一个和最后一个控制点称为起点和终点&#xff0c;中间的控制点一般不会位于曲线上 获取两个点之间的点就是通过线性插值&#xff08; Mathf.Lerp&#xff09…...

大数据平台安全主要是指什么安全?如何保障?

大数据时代已经来临&#xff0c;各种数据充斥着我们的生活与工作。随着数据的多样性以及复杂性以及大量性&#xff0c;大数据平台诞生了。但对于大数据平台大家都不是很了解&#xff0c;有人问大数据平台安全主要是指什么安全&#xff1f;如何保障&#xff1f; 大数据平台安全…...

Flutter的未来与趋势,23年还学吗?

随着移动应用市场的不断扩大&#xff0c;跨平台开发框架的需求也越来越大。Flutter框架可以帮助开发者在不同平台上快速开发高质量的移动应用程序&#xff0c;这种趋势将进一步推动Flutter的发展和普及。 作为一名前端开发工程师&#xff0c;学习Flutter框架是非常有必要的。因…...

RHCE——十三、Shell自动化运维编程基础

Shell 一、为什么学习和使用Shell编程二、Shell是什么1、shell起源2、查看当前系统支持的shell3、查看当前系统默认shell4、Shell 概念 三、Shell 程序设计语言1、Shell 也是一种脚本语言2、用途 四、如何学好shell1、熟练掌握shell编程基础知识2、建议 五、Shell脚本的基本元素…...

深入理解AMBA总线协议(AXI总结篇)

AXI总线已经是AMBA总线中最常见&#xff0c;使用最频繁的总线&#xff0c;并且没有之一。 可以说AXI总线已经成为了片上总线中最重要的协议&#xff0c;本篇文章打算花一些篇幅&#xff0c;帮大家总结一下AXI总线的学习重点、学习难点&#xff0c;以帮助大家更好更快的掌握AXI…...

建立无需build的react单页面应用SPA框架(2)

react-18.1.0&#xff0c;rc-easyui-1.2.9&#xff0c;babel-7.17.11 SPA还要处理的问题&#xff1a; &#xff08;一&#xff09;tabs切换事件通知 tabs切换时&#xff0c;自己的框架需要处理组件的生命周期&#xff0c;要有active/deactive&#xff0c;让组件能知道何时创…...

C# char曲线控件

一、char曲线显示随机数数据 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using Syst…...

远程访问本地jupyter notebook服务 - 无公网IP端口映射

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…...

flume系列之:记录一次消费大量Debezium数据,数据包含dml语句比较大,造成数据堆积在channel的解决方法

flume系列之:记录一次消费大量Debezium数据,数据包含dml语句比较大,造成数据堆积在channel的解决方法 一、背景二、相关技术博客三、flume层面解决方法四、debezium数据采集层面解决方法一、背景 Debezium采集了大量的数据,数据包含DMl语句,数据本身比较大。flume消费了大…...

Could not find artifact com.pageOffice:pageOffice:pom:4.3.0.2 in aliyunmaven

Could not find artifact com.pageOffice:pageOffice:pom:4.3.0.2 in aliyunmaven (https://maven.aliyun.com/repository/public) 仓库服务 阿里云云效 Maven 是什么 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#x…...

2023年9月数据治理/项目管理/产品管理/商务礼仪企业内训定制

在节奏飞驰、风起云涌的企业世界中&#xff0c;为了企业的蓬勃发展&#xff0c;可以在内部或者外部挑选有经验的老师进行培训和学习。简而言之&#xff0c;任何一个企业想要发展&#xff0c;都少不了进行内训。 企业内训的好处 提高员工的技能和知识水平 通过不断地学习和培训…...

后端面试话术集锦第 九 篇:Activiti工作流面试话术

这是后端面试集锦第九篇博文——Activiti工作流面试话术❗❗❗ 1. 工作流话术 工作流这块儿,实际在工作中使用的时候,Activiti用的居多,当然还有一些其他的工作流引擎。 在网上看了也大概看了一下,其他的像JBPM以及workflow等用的情况来讲不是很多。 所以说Activiti目前…...

JS中方法、函数、属性是一个东西吗

在 JavaScript 中&#xff0c;方法、函数和属性是相关但不完全相同的概念。 方法&#xff08;Method&#xff09;&#xff1a;在对象中&#xff0c;方法是对象的属性&#xff0c;但它的值是一个函数。方法可以通过对象来调用&#xff0c;并且可以访问对象的属性和其他方法。 …...

面经:微服务

文章目录 参考资料一. 微服务概述1. CAP理论2. BASE理论3. SpringBoot 与 SpringCloud对比 二. 服务注册&#xff1a;Zookeeper,Eureka,Nacos,Consul1. Nacos两种健康检查方式&#xff1f;2. nacos中负责负载均衡底层是如何实现的3. Nacos原理4. 临时实例和持久化(非临时)实例 …...

K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点

当今云原生环境中&#xff0c;Kubernetes&#xff08;K8s&#xff09;已成为既定的容器编排工具。随着 K8s 的普及&#xff0c;存储也成为 K8s 用户关注的一个重要问题&#xff1a;为了满足不同的场景需求&#xff0c;K8s 可以支持基于不同架构的多种存储方案。这些方案间有什么…...

【MySQL】3、MySQL的索引、事务、存储引擎

create table class (id int not null,name char(10),score decimal(5,2)); insert into class values (1,zhangsan,80.5); update class set namewangwu,passwd123 where id2; select * from class where id2; drop 索引的概念 是一种帮助系统&#xff0c;能够更快速的查询信…...

【Hello Algorithm】链表相关算法题

本篇博客介绍&#xff1a; 介绍下链表相关的算法题 链表相关算法题 快慢指针回文结构链表将单向链表按某值划分为左边小&#xff0c;中间相等&#xff0c;右边大的形式复制带随机指针的链表 链表相关的算法题其实都算不上难 我们真正要考虑的是一些边界问题 事实上链表题就是在…...

【水果分类】基于GUI计算机视觉和前馈神经网络自动水果分类系统附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

Mellanox ASAP2技术揭秘:如何通过硬件卸载提升OVS性能?

1. 为什么我们需要硬件卸载OVS&#xff1f; 在虚拟化环境中&#xff0c;Open vSwitch&#xff08;OVS&#xff09;就像是一个交通警察&#xff0c;负责指挥虚拟机之间的网络流量。但问题在于&#xff0c;这个"警察"一直靠软件在CPU上干活。想象一下&#xff0c;早高…...

Anlogic FD工具深度体验:如何用eMCU软核实现SF1芯片的PSRAM控制器设计

Anlogic FD工具实战&#xff1a;基于eMCU软核的PSRAM控制器设计进阶指南 当FPGA工程师需要在资源受限的SF1芯片上实现高性能存储控制时&#xff0c;Anlogic Future Dynasty&#xff08;FD&#xff09;工具链中的eMCU软核与PSRAM控制器组合提供了绝佳的解决方案。不同于基础教程…...

避坑指南:TDengine开源版taosdump备份恢复,这些性能问题和‘缺口’你得知道

TDengine开源版备份恢复实战&#xff1a;taosdump性能瓶颈与数据缺口深度解析 1. 当开源版遇上生产环境&#xff1a;taosdump的真实表现 去年夏天&#xff0c;我们团队在新能源监控项目中首次尝试用TDengine开源版构建时序数据库集群。当系统运行三个月后&#xff0c;客户突然…...

S32的进阶之路->7,S32DS中FTM中断与PWM结合的实战应用

1. FTM中断与PWM结合的应用场景 在嵌入式开发中&#xff0c;定时器和PWM&#xff08;脉冲宽度调制&#xff09;是最常用的外设功能之一。S32K144芯片的FTM&#xff08;FlexTimer Module&#xff09;模块提供了强大的定时和PWM生成能力&#xff0c;而将它们与中断结合使用&#…...

别再为H5读Excel发愁了!UniApp里用FileReader+XLSX库的保姆级避坑指南

UniApp H5开发实战&#xff1a;Excel文件解析的深度解决方案 当你在UniApp中开发H5应用时&#xff0c;处理本地Excel文件可能会遇到一些独特的挑战。与标准Web环境不同&#xff0c;UniApp的混合架构对文件操作有着特殊限制和要求。本文将带你深入理解这些差异&#xff0c;并提供…...

从数据到洞察:如何利用2024版建筑高度SHP数据,5步完成城市热岛效应初步分析

从数据到洞察&#xff1a;如何利用2024版建筑高度SHP数据&#xff0c;5步完成城市热岛效应初步分析 城市热岛效应是城市化进程中普遍存在的环境问题&#xff0c;表现为城市中心区域温度明显高于周边郊区的现象。这种现象不仅影响居民的生活质量&#xff0c;还会加剧能源消耗和空…...

别再只调PWM了!深入Linux thermal框架,让你的风扇转速更‘聪明’

别再只调PWM了&#xff01;深入Linux thermal框架&#xff0c;让你的风扇转速更‘聪明’ 当你的服务器在深夜突然风扇狂转&#xff0c;或是笔记本在轻度使用时莫名发烫&#xff0c;单纯调整PWM占空比就像用锤子做精细手术——粗暴且低效。真正的高手都在thermal子系统的规则引擎…...

SwiftHub性能优化:内存管理、网络缓存与响应速度提升

SwiftHub性能优化&#xff1a;内存管理、网络缓存与响应速度提升 【免费下载链接】SwiftHub GitHub iOS client in RxSwift and MVVM-C clean architecture 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftHub SwiftHub作为一款基于RxSwift和MVVM-C架构的GitHub iOS…...

ESXI系统安装全攻略:从U盘启动到网络配置

1. ESXI系统安装前的准备工作 第一次接触ESXI系统的朋友可能会觉得有点懵&#xff0c;其实它就是一个专门用于虚拟化的操作系统。简单来说&#xff0c;它能让一台物理服务器变成多台虚拟服务器&#xff0c;特别适合用来搭建测试环境或者部署云服务。我自己在数据中心工作时&…...