.NET MAUIでOSのVersion別処理

.NET MAUIでは、AndroidやiOSなど、OSごとの処理をわけたいなら、

  • #if iOS #endifでくくる
  • Platformsフォルダに実装する

とか色々ある。
こちらで解説されている通り。

けど、例えばAndroidでもAPI 28とそれ未満でわけたいとき、ある。

Andorid

例えば、AudioManagerの最小Volumeを取りたいとき。
Android API 28以降はGetStreamVolume関数が廃止され、GetStreamMinVolumeを使いたい。

class Sample
{
    [SupportedOSPlatformGuard("Android28.0")]
    internal static bool Is28OrAbove => Build.VERSION.SdkInt >= BuildVersionCodes.P;

    void test()
    {
        int min = 0;
        if (Is28OrAbove)
        {
            min = audioManager.GetStreamMinVolume(Android.Media.Stream.Music);
        }
        else
        {
            min = audioManager.GetStreamVolume(0);
        }
    }
}

iOS

iOSがよくわからんのよな。
処理を分岐させること自体はできるけど、警告が完全に出ないようにするにはどうしたら良いんだろう?
今は#pragma warning disable CA1422で逃げてたりする。

int version13 = string.Compare(UIDevice.CurrentDevice.SystemVersion, "13");
if (version13 <= -1)
{
    // iOS13以下
}
else
{
    // iOS13から
}

他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)