1. ホーム
  2. iphone

[解決済み】デバイスがどのiOSバージョンで動作しているかをプログラムで検出するにはどうすればよいですか?重複

2022-03-31 11:51:16

質問

ユーザーがiOS 5.0未満でアプリを起動しているかどうかをチェックし、アプリ内にラベルを表示したい。

ユーザーのデバイスで動作しているiOSをプログラムで検出するにはどうすればよいですか?

ありがとうございます。

解決方法は?

現在の最適なバージョン NSString 内で数値検索を行う必要がない場合は、以下のように定義します。 macros (元の回答参照。 iPhoneのiOSバージョンの確認 )

これらのマクロはgithubに存在するので、参照してください。 https://github.com/carlj/CJAMacros/blob/master/CJAMacros/CJAMacros.h

こんな感じで。

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

で、このように使用します。

if (SYSTEM_VERSION_LESS_THAN(@"5.0")) {
    // code here
}

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
    // code here
}


以下、旧バージョン

をクリックすると、OSのバージョンが表示されます。

[[UIDevice currentDevice] systemVersion]

は文字列を返します。

-[NSString floatValue]
-[NSString intValue]

このように

5.0.1は5.0または5(floatまたはint)になり、正確に比較するには、INTの配列に分離する必要があります。 受理された回答はこちらでご確認ください。 iPhoneのiOSバージョンを確認する

NSString *ver = [[UIDevice currentDevice] systemVersion];
int ver_int = [ver intValue];
float ver_float = [ver floatValue];

というように比較します。

NSLog(@"System Version is %@",[[UIDevice currentDevice] systemVersion]);
NSString *ver = [[UIDevice currentDevice] systemVersion];
float ver_float = [ver floatValue];
if (ver_float < 5.0) return false;

Swift 4.0の構文に対応

以下の例では、デバイスが iOS11 またはそれ以上のバージョン。

let systemVersion = UIDevice.current.systemVersion
if systemVersion.cgFloatValue >= 11.0 {
    //"for ios 11"
  }
else{
   //"ios below 11")
  }