ユーザーが iOS 5.0 未満でアプリを実行しているかどうかを確認し、アプリにラベルを表示したいと考えています。
ユーザーのデバイスでどの iOS が実行されているかをプログラムで検出するにはどうすればよいですか?
ありがとう!
ベストアンサー1
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]
文字列を返します。これはint/floatに変換できます。
-[NSString floatValue]
-[NSString intValue]
このような
両方の値 (floatValue、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")
}