Add support for minimum OS Version check

App versions that require a newer OS Version than the current device provides will be ignored.
This commit is contained in:
Andreas Linde 2013-09-09 01:26:49 +02:00
parent 484cca06dc
commit 43db55de17
3 changed files with 22 additions and 3 deletions

View File

@ -1,5 +1,6 @@
/*
* Author: Peter Steinberger
* Andreas Linde
*
* Copyright (c) 2012-2013 HockeyApp, Bit Stadium GmbH.
* Copyright (c) 2011 Andreas Linde, Peter Steinberger.
@ -34,6 +35,7 @@
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *version;
@property (nonatomic, copy) NSString *shortVersion;
@property (nonatomic, copy) NSString *minOSVersion;
@property (nonatomic, copy) NSString *notes;
@property (nonatomic, copy) NSDate *date;
@property (nonatomic, copy) NSNumber *size;

View File

@ -1,5 +1,6 @@
/*
* Author: Peter Steinberger
* Andreas Linde
*
* Copyright (c) 2012-2013 HockeyApp, Bit Stadium GmbH.
* Copyright (c) 2011 Andreas Linde, Peter Steinberger.
@ -43,6 +44,7 @@
appVersionMetaInfo.name = [dict objectForKey:@"title"];
appVersionMetaInfo.version = [dict objectForKey:@"version"];
appVersionMetaInfo.shortVersion = [dict objectForKey:@"shortversion"];
appVersionMetaInfo.minOSVersion = [dict objectForKey:@"minimum_os_version"];
[appVersionMetaInfo setDateWithTimestamp:[[dict objectForKey:@"timestamp"] doubleValue]];
appVersionMetaInfo.size = [dict objectForKey:@"appsize"];
appVersionMetaInfo.notes = [dict objectForKey:@"notes"];
@ -106,6 +108,8 @@
return NO;
if (![self isEqualComparingString:self.shortVersion withString:anAppVersionMetaInfo.shortVersion])
return NO;
if (![self isEqualComparingString:self.minOSVersion withString:anAppVersionMetaInfo.minOSVersion])
return NO;
if (![self isEqualComparingString:self.notes withString:anAppVersionMetaInfo.notes])
return NO;
if (![self isEqualComparingDate:self.date withDate:anAppVersionMetaInfo.date])
@ -126,6 +130,7 @@
[encoder encodeObject:self.name forKey:@"name"];
[encoder encodeObject:self.version forKey:@"version"];
[encoder encodeObject:self.shortVersion forKey:@"shortVersion"];
[encoder encodeObject:self.minOSVersion forKey:@"minOSVersion"];
[encoder encodeObject:self.notes forKey:@"notes"];
[encoder encodeObject:self.date forKey:@"date"];
[encoder encodeObject:self.size forKey:@"size"];
@ -139,6 +144,7 @@
self.name = [decoder decodeObjectForKey:@"name"];
self.version = [decoder decodeObjectForKey:@"version"];
self.shortVersion = [decoder decodeObjectForKey:@"shortVersion"];
self.minOSVersion = [decoder decodeObjectForKey:@"minOSVersion"];
self.notes = [decoder decodeObjectForKey:@"notes"];
self.date = [decoder decodeObjectForKey:@"date"];
self.size = [decoder decodeObjectForKey:@"size"];
@ -197,9 +203,10 @@
}
}
// a valid app needs at least following properties: name, version, date
// A valid app needs at least following properties: name, version, date
- (BOOL)isValid {
BOOL valid = [self.name length] && [self.version length] && self.date;
BOOL valid = [self.name length] && [self.version length] && self.date;
return valid;
}

View File

@ -735,7 +735,17 @@ typedef NS_ENUM(NSInteger, BITUpdateAlertViewTag) {
for (NSDictionary *dict in feedArray) {
BITAppVersionMetaInfo *appVersionMetaInfo = [BITAppVersionMetaInfo appVersionMetaInfoFromDict:dict];
if ([appVersionMetaInfo isValid]) {
[tmpAppVersions addObject:appVersionMetaInfo];
// check if minOSVersion is set and this device qualifies
BOOL deviceOSVersionQualifies = YES;
if ([appVersionMetaInfo minOSVersion]) {
NSComparisonResult comparissonResult = bit_versionCompare(appVersionMetaInfo.minOSVersion, [[UIDevice currentDevice] systemVersion]);
if (comparissonResult == NSOrderedDescending) {
deviceOSVersionQualifies = NO;
}
}
if (deviceOSVersionQualifies)
[tmpAppVersions addObject:appVersionMetaInfo];
} else {
[self reportError:[NSError errorWithDomain:kBITUpdateErrorDomain
code:BITUpdateAPIServerReturnedInvalidData