유니티 C# 앱 버전 비교해서 업데이트 하기 간단 구현 AWS 활용

반응형

유니티 C# 앱 버전 비교해서 업데이트 하기 간단 구현 AWS 활용

유니티 C# 앱 버전 비교해서 업데이트 하기 간단 구현 AWS 활용

 

AWS Json 형식

{
  "latest_version": "1.2.3",
  "update_urls": {
    "android": "https://play.google.com/store/apps/details?id=com.example.myapp",
    "ios": "https://apps.apple.com/app/id1234567890"
  }
}

 

코드 작성

using System;
using System.IO;
using Newtonsoft.Json.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;

public class VersionChecker : MonoBehaviour
{
    [Header("AWS JSON 파일 경로")]
    public string awsJsonFilePath = "aws_versions.json";

    private string currentVersion;
    private string latestVersion;
    private string androidStoreUrl;
    private string iosStoreUrl;

    void Start()
    {
        // 현재 앱 버전 가져오기
        currentVersion = Application.version;
        Debug.Log($"현재 앱 버전: {currentVersion}");

        // AWS JSON 파일 읽기 및 처리
        LoadAndCheckVersion();
    }

    void LoadAndCheckVersion()
    {
        try
        {
            // JSON 파일 읽기
            string jsonContent = File.ReadAllText(awsJsonFilePath);
            JObject json = JObject.Parse(jsonContent);

            // 최신 버전 및 업데이트 URL 추출
            latestVersion = json["latest_version"]?.ToString();
            androidStoreUrl = json["update_urls"]?["android"]?.ToString();
            iosStoreUrl = json["update_urls"]?["ios"]?.ToString();

            Debug.Log($"최신 버전: {latestVersion}");

            // 버전 비교
            if (Version.TryParse(currentVersion, out var current) &&
                Version.TryParse(latestVersion, out var latest))
            {
                if (current < latest)
                {
                    Debug.LogWarning("앱 버전이 최신이 아닙니다. 업데이트가 필요합니다.");
                    PromptUpdate();
                }
                else
                {
                    Debug.Log("앱 버전이 최신입니다. 계속 진행합니다.");
                    ProceedToApp();
                }
            }
            else
            {
                Debug.LogError("버전 비교 실패: 올바른 형식이 아닙니다.");
            }
        }
        catch (Exception ex)
        {
            Debug.LogError($"JSON 파일 처리 중 오류 발생: {ex.Message}");
        }
    }

    void PromptUpdate()
    {
        // 업데이트 메시지 표시 (UI 또는 팝업)
        Debug.Log("사용자에게 업데이트를 요청합니다.");

#if UNITY_ANDROID
        Application.OpenURL(androidStoreUrl);
#elif UNITY_IOS
        Application.OpenURL(iosStoreUrl);
#else
        Debug.LogError("지원되지 않는 플랫폼입니다.");
#endif

        // 업데이트 강제 시 앱 종료
        Application.Quit();
    }

    void ProceedToApp()
    {
        // 앱이 최신 버전일 경우 다음 씬 로드 등 진행
        Debug.Log("앱을 실행합니다.");
        SceneManager.LoadScene("MainScene");
    }
}
반응형