今回は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();