首頁 > 軟體

Unity為軟體新增使用有效期的具體步驟

2022-03-18 19:01:12

功能需求:為軟體設定一個使用有效期,當超過指定時間後,程式無法執行。

實現思路:定義一個常數,用於記錄一個時間,我們稱之為標記時間,使用當前時間減去標記時間,如果時間間隔大於設定的有效期,退出程式。

具體步驟:

1.定義標記時間常數:

//標記時間
private const string flag = "2022-03-17 17:11:25";

使用DateTime.Parse可將其轉換為DateTime型別:

DateTime flagTime = DateTime.Parse(flag);

2.獲取當前時間:

DateTime nowTime = DateTime.Now;

3.計算時間間隔:

TimeSpan span = nowTime - flagTime;

4.判斷時間間隔是否大於有效期:

if (span.Days >= expires) Application.Quit();

但是這樣這樣實現會有一個問題,DateTime.Now獲取的是本地計算機時間,如果使用者故意修改計算機的時間,那麼這個功能將無意義。

因此將獲取當前時間的步驟修改為呼叫網路介面來獲取時間,這裡以如下這個介面為例:

https://apps.game.qq.com/CommArticle/app/reg/gdate.php

使用GET方式呼叫介面,程式碼如下:

using System;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
 
public class Example : MonoBehaviour
{
    //標記時間
    private const string flag = "2022-03-17 17:11:25";
    //有效期 單位:天
    private const int expires = 30;
    private void Start()
    {
        StartCoroutine(RequestCoroutine());
    }
    private IEnumerator RequestCoroutine()
        string url = "https://apps.game.qq.com/CommArticle/app/reg/gdate.php";
        using (UnityWebRequest request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();
            if(request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log(request.downloadHandler.text);
            }
            else
                Debug.LogError($"get time failed: {request.error}");
        }
}

呼叫介面我們可以收到如圖所示的響應,我們只需要通過Split函數將字串分割,獲取到等號後面的部分,再使用Substring函數擷取‘’符號中間的部分即可:

string timeStr = request.downloadHandler.text.Split('=')[1];
timeStr = timeStr.Trim().Substring(1, timeStr.Length - 4);
Debug.Log(timeStr);

 

 完整程式碼:

using System;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
 
public class Example : MonoBehaviour
{
    //標記時間
    private const string flag = "2022-03-17 17:11:25";
    //有效期 單位:天
    private const int expires = 30;
    private void Start()
    {
        StartCoroutine(RequestCoroutine());
    }
    private IEnumerator RequestCoroutine()
        string url = "https://apps.game.qq.com/CommArticle/app/reg/gdate.php";
        using (UnityWebRequest request = UnityWebRequest.Get(url))
        {
            yield return request.SendWebRequest();
            if(request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log(request.downloadHandler.text);
                string timeStr = request.downloadHandler.text.Split('=')[1];
                timeStr = timeStr.Trim().Substring(1, timeStr.Length - 4);
                Debug.Log(timeStr);
                DateTime flagTime = DateTime.Parse(flag);
                DateTime nowTime = DateTime.Parse(timeStr);
                TimeSpan span = nowTime - flagTime;
                Debug.Log(span);
                if (span.Days >= expires) Application.Quit();
            }
            else
                Debug.LogError($"get time failed: {request.error}");
        }
}

到此這篇關於Unity為軟體新增使用有效期的文章就介紹到這了,更多相關Unity軟體使用有效期內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com