.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関連要素をまとめていますので、よければ一覧記事もご覧ください。