Howasuto
@Howasuto (Akihiro Shiraishi)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【iOS】AppleSilicon環境(MacOS)でiOSアプリを実行した時にMacで実行しているかをどうやって判定したらいいか?

解決したいこと

iOSアプリをAppleSilicon環境で実行した際にどのようにして、実行端末がMacであることを判定するのか知りたいです。

試したこと

試したこととては以下のコードで端末の判定ができないかとやってみましが、実行環境がMacであるにも関わらずiPadとして判定されてしまいました。

if UIDevice.current.userInterfaceIdiom == .phone {
   // iPhone
   print("iPhone")
} else if UIDevice.current.userInterfaceIdiom == .pad {
   // iPad
   print("iPad")
} else if UIDevice.current.userInterfaceIdiom == .mac {
   // Mac
   print("Mac")
}

/////////////////////////////////////////////////////////////
出力結果
iPad
0

1Answer

自分には検証する環境を持ち合わせていないですが、ドキュメントを調べたところでは、isiOSAppOnMacプロパティが使えるかもと思われます。

Running Your iOS Apps on macOS
The isiOSAppOnMac property of ProcessInfo tells you whether your iOS app is running on macOS or iOS, but checking that property should always be your last choice. It’s better to run the same code on both platforms.

ちなみに、userInterfaceIdiom.pad である事は以下のドキュメントに説明があるようです。

Adapting iOS Code to Run in the macOS Environment
For an app deployable on iPad, the idiom type is always UIUserInterfaceIdiom.pad.

1Like

Comments

  1. @Howasuto

    Questioner

    @nukka123  さん回答ありがとうございます!
    ご助言通り以下のコードで判定ができることが確認できました!
    本件は備忘録として私のQiitaに残さしていただきます!

    //////////////////////////////////////////////////////////////////////////
    if ProcessInfo.processInfo.isiOSAppOnMac {
    // iOSアプリをMacで実行時
    print("iOSAppOnMac")
    } else if UIDevice.current.userInterfaceIdiom == .phone {
    // iPhone用インターフェースで実行時
    print("iPhone")
    } else if UIDevice.current.userInterfaceIdiom == .pad {
    // iPad用インターフェースで実行時
    print("iPad")
    } else if UIDevice.current.userInterfaceIdiom == .mac {
    // Mac用インターフェースで実行時
    print("Mac")
    }
    //////////////////////////////////////////////////////////////////////////

Your answer might help someone💌