iOSシミュレータのタイプとバージョンを確認してください

Sagar R. Kothari

iOSデバイスを検出するために次のコードスニップがあります。

NSString * platformNSString () {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}

NSString * platformString () {
    NSString *platform = platformNSString();

    // iphones
    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (UK+Europe+Asis+China)";
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (UK+Europe+Asis+China)";
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6";
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 Plus";

    // ipods
    if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
    if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
    if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
    if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
    if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";

    // ipads
    if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
    if ([platform isEqualToString:@"iPad1,2"]) return @"iPad 3G";
    if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini";
    if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";
    if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
    if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
    if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini Retina (WiFi)";
    if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
    // iPad5,3

    // simulators
    if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {

    }

    else return @"Unknown";
    return platform;
}

私も期待しているのは、iOSシミュレーターのリストもあるということですか?

次の画像を参照してください。

IOSシミュレーターのリスト

つまり、デバイスを検出するときに、実行時に使用されているiOSバージョンのシミュレーターのタイプも検出したいと思います。

これが私の努力を示すコードブロックです。

// simulators
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {
    CGSize size = [[UIScreen mainScreen] bounds].size;
    CGFloat simulatorHeight = (size.height>size.width)?size.height:size.width;
    if(simulatorHeight>=2048) {
        return @"Retina iPad Simulator";
    } else if(simulatorHeight>=1920) {
        return @"Retina iPhone 6+ Simulator";
    } else if(simulatorHeight>=1334) {
        return @"Retina iPhone 6 Simulator";
    } else if(simulatorHeight>=1136) {
        return @"Retina iPhone 5/5S/5C Simulator";
    } else if(simulatorHeight>=960) {
        return @"Retina iPhone 4/4S Simulator";
    } else if(simulatorHeight>=480) {
        return @"Retina iPhone 4/4S Simulator";
    }
}
ジェレミーハドルストンセコイア

上記の私のコメントに示されているように、この情報は本当に必要ないはずです。

しかし、少なくとも答えを提供するために、Xcode 6では、のgetenv("SIMULATOR_MODEL_IDENTIFIER")代わりにを使用できますsysctlbyname("hw.machine", ...)これが将来のリリースで機能するという保証はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

レプリケーションタイプmysqlを確認してください

分類Dev

Xtendバリデーターのタイプを確認してください

分類Dev

Redisのバージョンを確認してください

分類Dev

FirefoxOSのバージョンを確認してください

分類Dev

Leiningenテンプレートのバージョン番号を確認してください

分類Dev

React-Native:エラーアプリのインストールに失敗しました。Androidエミュレーターが実行されていることを確認してください

分類Dev

VSTS警告:テスト検出器とエグゼキューターが登録されており、プラットフォームとフレームワークのバージョン設定が適切であることを確認して、再試行してください

分類Dev

Unityの整数値でプレイヤーのターンを確認してください

分類Dev

iOSシミュレータバージョンの最新バージョンを確認するにはどうすればよいですか?

分類Dev

メンバー/プロパティのタイプを確認してください

分類Dev

バックエンドでグーグルアンドロイドサブスクリプションステータスを確認してください

分類Dev

アプリのドキュメントとデータを確認してください:STACK-LOGS?

分類Dev

Hololensエミュレーターの「ターゲットデバイスで開発者モードが有効になっていることを確認してください」エラーを修正する方法

分類Dev

2つの関数またはメンバー関数ポインターのシグネチャが等しいことを確認してください

分類Dev

Yii2のデータベースバージョンから確認してください

分類Dev

SSRSレポートカスタムコード内のAciveDirectoryGroupメンバーシップフォームを確認してください

分類Dev

ジェネリックを使用しない場合は、ターゲットエンティティがリレーションシップマッピングで定義されていることを確認してください

分類Dev

MakefileでFreeBSDのバージョンを確認してください

分類Dev

C#WPF-システムタスクバーのアプリケーションアイコンを右クリックする場合は、アプリケーションを閉じる前にユーザーに確認してください

分類Dev

Pythonでファイルのパーミッションを確認してください

分類Dev

テンプレートパラメータのタイプを確認し、別のテンプレートを使用してください

分類Dev

レジストリc#からWindowsのバージョンを確認してください

分類Dev

jQuery | 選択オプションの入力タイプを確認してください

分類Dev

シンプルインジェクターがタイプを登録しているか確認してください

分類Dev

オプションのパラメータが両方とも合格または未定義であることをTSに確認してください

分類Dev

ジェネリックラムダパラメーターのタイプを確認してください

分類Dev

Ansible:iosアップグレードルーター:イメージをコピーする前に「spacefree_kb」を確認してください

分類Dev

Androidアプリの互換性の最小バージョンを確認してください

分類Dev

Windows Server AppFabricCache、例外、クライアントのバージョンを確認してください

Related 関連記事

  1. 1

    レプリケーションタイプmysqlを確認してください

  2. 2

    Xtendバリデーターのタイプを確認してください

  3. 3

    Redisのバージョンを確認してください

  4. 4

    FirefoxOSのバージョンを確認してください

  5. 5

    Leiningenテンプレートのバージョン番号を確認してください

  6. 6

    React-Native:エラーアプリのインストールに失敗しました。Androidエミュレーターが実行されていることを確認してください

  7. 7

    VSTS警告:テスト検出器とエグゼキューターが登録されており、プラットフォームとフレームワークのバージョン設定が適切であることを確認して、再試行してください

  8. 8

    Unityの整数値でプレイヤーのターンを確認してください

  9. 9

    iOSシミュレータバージョンの最新バージョンを確認するにはどうすればよいですか?

  10. 10

    メンバー/プロパティのタイプを確認してください

  11. 11

    バックエンドでグーグルアンドロイドサブスクリプションステータスを確認してください

  12. 12

    アプリのドキュメントとデータを確認してください:STACK-LOGS?

  13. 13

    Hololensエミュレーターの「ターゲットデバイスで開発者モードが有効になっていることを確認してください」エラーを修正する方法

  14. 14

    2つの関数またはメンバー関数ポインターのシグネチャが等しいことを確認してください

  15. 15

    Yii2のデータベースバージョンから確認してください

  16. 16

    SSRSレポートカスタムコード内のAciveDirectoryGroupメンバーシップフォームを確認してください

  17. 17

    ジェネリックを使用しない場合は、ターゲットエンティティがリレーションシップマッピングで定義されていることを確認してください

  18. 18

    MakefileでFreeBSDのバージョンを確認してください

  19. 19

    C#WPF-システムタスクバーのアプリケーションアイコンを右クリックする場合は、アプリケーションを閉じる前にユーザーに確認してください

  20. 20

    Pythonでファイルのパーミッションを確認してください

  21. 21

    テンプレートパラメータのタイプを確認し、別のテンプレートを使用してください

  22. 22

    レジストリc#からWindowsのバージョンを確認してください

  23. 23

    jQuery | 選択オプションの入力タイプを確認してください

  24. 24

    シンプルインジェクターがタイプを登録しているか確認してください

  25. 25

    オプションのパラメータが両方とも合格または未定義であることをTSに確認してください

  26. 26

    ジェネリックラムダパラメーターのタイプを確認してください

  27. 27

    Ansible:iosアップグレードルーター:イメージをコピーする前に「spacefree_kb」を確認してください

  28. 28

    Androidアプリの互換性の最小バージョンを確認してください

  29. 29

    Windows Server AppFabricCache、例外、クライアントのバージョンを確認してください

ホットタグ

アーカイブ