【Unity】アプリのバージョンを動的に比較する

  • URLをコピーしました!
目次

はじめに

よくある、アプリを立ち上げると「ストアから最新版をダウンロードしましょう」と促すやつ。あれを実装したくて、バージョン(1.1や1.0.2など)の比較方法を調べたところ、既に「Version」という便利なクラスがあったので、こちらを活用したサンプルコードの紹介です。ゼロから作らずに済んでよかった。。。

あわせて読みたい
Version クラス (System) アセンブリ、オペレーティング システム、または共通言語ランタイムのバージョン番号を表します。 このクラスは継承できません。

サンプルコード

using System;//追加

public static class CompareVersionUtil
{

    public static int GetResult(string client, string server)
    {
        var a = new Version(client);
        var b = new Version(server);

        return a.CompareTo(b);
    }

}

「using System」を追加しています。MonoBehaviourを継承しないStaticクラスなのでシーンに配置する必要はありません。端末側のバージョンとサーバー側のバージョンを「GetResult」メソッドに渡します。「System」の「Version」クラスでそれぞれ変換して、「a.CompareTo(b)」で比較した数値を戻しています。

  • 戻り値は3パターンです。
    • (a == b) の場合は「 0 」
    • (a > b) の場合は「 1 」
    • (a < b) の場合は「-1 」

使い方

CompareVersionUtil.GetResult()で「0」「1」「-1」のいずれかを返すので、それぞれに応じた処理を行ってください。

例として端末のバージョンとサーバー側のバージョンを適当に作って比較してみます。

using UnityEngine;

public class Temp : MonoBehaviour
{
    void Start()
    {
		    //クライアント側とサーバー側が同じ
		    string clientA = "1.0.0";
		    string serverA = "1.0.0";

    		Check(clientA,serverA);

		    //クライアント側が新しい(開発版など)
	    	string clientB = "1.3.45";
	    	string serverB = "1.2.34";

		    Check(clientB,serverB);

    		//クライアント側が古い
		    string clientC = "1.78.9";
	    	string serverC = "2.0.00";

		    Check(clientC,serverC);
	    }

    void Check(string client, string server)
    {
        var value = CompareVersionUtil.GetResult(client,server);

        switch(value)
        {
            case 0:
			          Debug.Log($"(a == b): アプリは最新版です");
            break;
            case 1:
			          Debug.Log($"(a > b): アプリはβ版です");
            break;
            case -1:
			          Debug.Log($"(a < b): ストアから最新版をダウンロードしましょう");
            break;
        }
    }
}

上のコードをシーン内に配置して実行した結果です。

まとめ

実際にはアプリのクライアント側のバージョンは「Application.version」で取得できます。また、サーバー側のバージョンはPlayFabやFirebaseまたはUnityのRemoteConfigなどで管理すると良いと思います。

「Version」クラスのおかげで、わずか数行でアプリのバージョン比較が実装できました。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次