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

news2024/11/15 14:06:50

前言

如题的需求应该经常在开发被提到,例如给客户体验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 update
    void Start()
    {
        DateTime da = DateTime.Now;
        StDt = DateTime.Parse(StTimeStr);
        EdDt = StDt.AddDays(ValDays).AddDays(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);
        }

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java如何将jar包上传到Maven中央仓库(超详细2023最新版)

文章目录 Java如何将jar包上传到Maven中央仓库引言Step1&#xff1a;注册 JIRA 账号Step2&#xff1a;发布申请Step3&#xff1a;下载并安装GPGStep4&#xff1a;配置maven的setting.xmlStep5&#xff1a;配置pom.xmlStep6&#xff1a;上传 jar 包Step7&#xff1a;引入 jar 包…

SwiftUI 中限制任意视图为指定的屏幕旋转方向

功能需求 在 SwiftUI 开发中,我们有时需要限制 App 中某些视图为特定的屏幕旋转方向,而另一些视图不做限制(或做其它限制),这可以做到吗? 如上图所示:我们成功的限制了 SwiftUI 中不同视图对应于不同的屏幕旋转方向(Interface Orientations)。 在本篇博文中,您将学到…

OpenCV - C++实战(01) — OpenCV简介

目录 第1章 OpenCV简介 1.1 简介 1.1.1 OpencV 库简介 1.1.2 命名空间 1.2 OpenCV模块 1.3 装载、显示和存储图像 1.3.1 创建图像 1.3.2 读取图像 1.3.3 定义窗口与显示图像 1.3.4 图像翻转 1.3.5 保存图像 1.3.6 图像的复制 1.3.7 创建数组和向量 1.…

01、前端使用 thymeleaf 后,视图页面找不到---Cannot resolve MVC View ‘xxxxx前端页面‘

Cannot resolve MVC View ‘xxxxx前端页面’ 没有找到对应的mvc的前端页面。 代码&#xff1a;前端这里引入了 thymeleaf 模板 解决&#xff1a; 需要添加 thymeleaf 的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>s…

APP调用bindService的跨进程调用过程

app执行bindService时会经过如下8次跨系统进程调用过程&#xff1a; 第1步&#xff1a;通过AMS.getService跨进程调用 第2步&#xff1a;AMS返回它的IBinder 第3步&#xff1a;通过AMS的IBinder调用AMS的bindService方法 第4步&#xff1a;而AMS存放有Server端的IBinder&…

华为数通方向HCIP-DataCom H12-821题库(单选题:101-120)

第101题 可用于多种路由协议,由 ​​if-match​​​和 ​​apply​​子句组成的路由选择工具是 A、​​route-policy​​ B、​​IP-Prefix​​ C、​​commnityfilter​​ D、​​as-path-filter​​ 答案&#xff1a;A 解析&#xff1a; Route-policy&#xff08;路由策…

扫雷小游戏

目录 一.扫雷小游戏 二.游戏主体一览 ​编辑 三.模块化设计扫雷游戏 3.1打印欢迎菜单 3.2创建两个二维数组 3.3棋盘稍加修改 3.4布置雷 3.5排查雷 四.游戏总体代码 4.1game.h头文件 4.2game.c函数实现源文件 4.3游戏main函数主体 五.游戏效果图 一.扫雷小游戏 这是…

EB Tresos第一个项目报13026

EB项目创建 前期的准备工作见以上这篇文章&#xff0c;不做过多叙述&#xff1b;但是点击Generate Project会报错&#xff0c;报错如下&#xff1a; Code generator finished. Errors “1” Warnings “0” 然后点击 Problems View 查看提示&#xff0c;提示如下&#xff1a; …

大数据:AI大模型对数据分析领域的颠覆(文末送书)

随着数字化时代的到来&#xff0c;大数据已经成为了各行各业中不可或缺的资源。然而&#xff0c;有效地分析和利用大数据仍然是一个挑战。在这个背景下&#xff0c;OpenAI推出的Code Interpreter正在对数据分析领域进行颠覆性的影响。 如何颠覆数据分析领域&#xff1f;带着这…

为什么Python列表和字典前面会加星号(**)?

目录标题 前言一、列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09;前面加星号*二、字典&#xff08;dict&#xff09;前面加两星号**尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! Python 中&#xff0c;单星号*和双星号**除了作为“乘”和“…

视频汇聚/云存储/安防监控AI视频智能分析平台——明厨亮灶解决方案

人工智能技术已经越来越多地融入到视频监控领域中&#xff0c;近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能&#xff0c;该平台内置多种AI算法&#xff0c;可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍&#xff0c;支持人脸检测、…

算法 for GAMES

栈 #include <iostream> #include <stack>int main() {std::stack<int> intStack;// 压入元素到堆栈intStack.push(5);intStack.push(10);intStack.push(15);// 查看堆栈顶部元素std::cout << "Top element: " << intStack.top() <…

虚虚实实,让敌人难以琢磨

与敌作战&#xff0c;虚虚实实&#xff0c;难以琢磨 【安志强趣讲《孙子兵法》第20讲】 第六篇&#xff1a;虚实篇 【全篇趣讲白话】 打仗就是要虚虚实实&#xff0c;让敌人难以琢磨。 【原文】 孙子曰&#xff1a;凡先处战地而待敌者佚&#xff0c;后处战地而趋战者劳。故善…

Locked勒索病毒:最新变种locked袭击了您的计算机?

导言&#xff1a; 在数字时代&#xff0c;一场隐秘的威胁正悄然而至&#xff0c;它的名字是.locked勒索病毒。这个黑暗的存在以其狡猾的攻击方式和致命的数据封锁能力&#xff0c;威胁着我们的数字生活。本文91数据恢复将带您深入了解.locked勒索病毒的本质&#xff0c;探索恢…

【Day-20慢就是快】代码随想录-栈与队列-有效的括号

给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被…

Redis7安装

1. 使用什么系统安装redis 由于企业里面做Redis开发&#xff0c;99%都是Linux版的运用和安装&#xff0c;几乎不会涉及到Windows版&#xff0c;上一步的讲解只是为了知识的完整性&#xff0c;Windows版不作为重点&#xff0c;同学可以下去自己玩&#xff0c;企业实战就认一个版…

会声会影2023全新中文专业版下载安装教程

熟练使用会声会影视频编辑工具&#xff0c;对视频创作过程的帮助是极大的。大家可以放心大胆地去研究会声会影的视频编辑技巧&#xff0c;会声会影2023与以往版本会声会影版本最大的区别是&#xff1a;账户制管理。可以通过账户添加或移除设备&#xff0c;非常便捷。该软件一直…

Vue2向Vue3过度Vuex核心概念mutations

目录 1 核心概念-mutations1.定义mutations2.格式说明3.组件中提交 mutations4.练习5.总结 2 带参数的 mutations1.目标&#xff1a;2.语法2.1 提供mutation函数&#xff08;带参数&#xff09;2.2 提交mutation 3 练习-mutations的减法功能1.步骤2.代码实现 4 练习-Vuex中的值…

05.Image Captioning with Semantic Attention

目录 前言泛读摘要Introduction创新/贡献点Related Work 精读输入的注意力模型输出的注意力模型模型学习视觉属性/概念预测实验MS-COCO的性能实验分析 Conclusion 代码略 前言 本课程来自深度之眼《多模态》训练营&#xff0c;部分截图来自课程视频。 文章标题&#xff1a;Ima…

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…