Xamarin.Forms アプリのバージョンとバージョン番号(ビルドバージョン番号)の取得方法

今回はXamarin.Forms でアプリのバージョンとバージョン番号(iOSではビルドバージョン番号)の取得方法についての説明です。

特に難しい事はなく、下記手順で取得できます。

1.共通プロジェクトに各OSの処理を呼び出すための関数を定義

public interface IAppInfoService {
    // アプリのバージョンを取得
    string GetVersion();
    // アプリのバージョン番号を取得
    int GetVersionNumber();
}

2.Androidプロジェクト内にバージョンの情報を取得するクラスを追加

using Xamarin.Forms;
[assembly: Dependency(typeof(TestPrj.Droid.AppInfoService))]
namespace TestPrj.Droid {
    public class AppInfoService : IAppInfoService {
        // アプリのバージョンを取得
        public string GetVersion() {
            var context = Android.App.Application.Context;
            return context.PackageManager
                   .GetPackageInfo(context.PackageName, 0).VersionName;
        }

        // アプリのバージョン番号を取得
        public int GetVersionNumber() {
            var context = Android.App.Application.Context;
            return context.PackageManager
                   .GetPackageInfo(context.PackageName, 0).VersionCode;
        }
    }
}

3.iOSプロジェクト内にバージョンの情報を取得するクラスを追加

using Xamarin.Forms;
using Foundation;
[assembly: Dependency(typeof(TestPrj.iOS.AppInfoService))]
namespace TestPrj.iOS {
    public class AppInfoService : IAppInfoService {
        // アプリのバージョンを取得
        public string GetVersion() {
            return NSBundle.MainBundle
                   .InfoDictionary["CFBundleShortVersionString"]
                   .ToString();
        }
        
        // アプリのバージョン番号を取得
        public int GetVersionNumber() {
            var version = NSBundle.MainBundle
                          .InfoDictionary["CFBundleVersion"]
                          .ToString();
            return int.Parse(version);
        }
    }
}

4.バージョンの情報を取得したい箇所でDependencyServiceを使いバージョンデータを取得

var version = DependencyService.Get<IAppInfoService>().GetVersion();
var versionNumber = DependencyService.Get<IAppInfoService>().GetVersionNumber();
タイトルとURLをコピーしました