Splendor_iOS
Splendor_iOS

Reputation: 217

How to get the proper iOS version programmatically?

I want to get the current os version of user device for some analysis in backend. Im trying to get it as below,

[[[UIDevice currentDevice] systemVersion] floatValue]; **//not returning the minor version number**

When I test this by running in my iPhone which is having iOS 8.0.2, this api returns me 8.000000 as the result but I need the exact iOS version which is 8.0.2

Any help in fixing this problem is appreciated in advance.

Upvotes: 6

Views: 15803

Answers (5)

holex
holex

Reputation: 24041

maybe not the more elegant solution ever but it definitely does the job, so you can try something like that in ObjC:

- (NumVersion)systemVersion {
    NSArray *_separated = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."];
    NumVersion _version = { 0, 0, 0, 0 };
    if (_separated.count > 3) _version.stage = [[_separated objectAtIndex:3] integerValue];
    if (_separated.count > 2) _version.nonRelRev = [[_separated objectAtIndex:2] integerValue];
    if (_separated.count > 1) _version.minorAndBugRev = [[_separated objectAtIndex:1] integerValue];
    if (_separated.count > 0) _version.majorRev = [[_separated objectAtIndex:0] integerValue];
    return _version;
}

then:

NumVersion version = [self systemVersion];
NSLog(@"%d, %d, %d, %d", version.majorRev, version.minorAndBugRev, version.nonRelRev, version.stage);

will print (in my case at the very moment):

11, 0, 2, 0

what you'd be able convert to a more desirable format for your analytics.

Upvotes: 0

Stan
Stan

Reputation: 1573

Objective C

// define macro
#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)

then use like that:

if (SYSTEM_VERSION_LESS_THAN(@"10.0")){
   //your code here 
}

Upvotes: 2

dmaulikr
dmaulikr

Reputation: 468

NSString *osVersion = [[UIDevice currentDevice] systemVersion];

Upvotes: 1

meronix
meronix

Reputation: 6176

you can get it with this, in NSString format:

[UIDevice currentDevice].systemVersion

NEW EDIT

PS

you changed your question... now my answer has no more sense... next time add new lines with an evident edit, to let everyone understand the thread of the question/answers, please

Upvotes: 7

ZeMoon
ZeMoon

Reputation: 20274

In iOS 8 and above, you can use:

[[NSProcessInfo processInfo] operatingSystemVersion]

If you want to check the availablity of particular API, then there is a better way than checking OS versions, as explained here.

Upvotes: 14

Related Questions