Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions iVersion/iVersion.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ iVersionErrorCode;
@property (nonatomic, assign) BOOL groupNotesByVersion;
@property (nonatomic, assign) float checkPeriod;
@property (nonatomic, assign) float remindPeriod;
@property (nonatomic, assign) int updateLevel;
//1 - Low (Download, Ignore and Remind Me Later (if lenght > 0) buttons appear)
//2 - Medium (Download and Remind Me Later (if lenght > 0) buttons appear)
//3 - High (Only Download button apears)

//message text - you may wish to customise these
@property (nonatomic, copy) NSString *inThisVersionTitle;
Expand Down
27 changes: 23 additions & 4 deletions iVersion/iVersion.m
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ - (iVersion *)init
self.checkAtLaunch = YES;
self.checkPeriod = 0.0f;
self.remindPeriod = 1.0f;
self.updateLevel = 1;

#ifdef DEBUG

Expand Down Expand Up @@ -576,9 +577,9 @@ - (void)downloadedVersionsData
self.visibleRemoteAlert = [self alertViewWithTitle:title
details:details
defaultButton:self.downloadButtonLabel
cancelButton:self.ignoreButtonLabel];
cancelButton:self.updateLevel < 2 ? self.ignoreButtonLabel : nil];

if ([self.remindButtonLabel length])
if ([self.remindButtonLabel length] && self.updateLevel < 3)
{
[self.visibleRemoteAlert addButtonWithTitle:self.remindButtonLabel];
}
Expand Down Expand Up @@ -737,6 +738,7 @@ - (void)checkForNewVersionInBackground
BOOL newerVersionAvailable = NO;
NSString *latestVersion = nil;
NSDictionary *versions = nil;
int remoteUpdateLevel = self.updateLevel;

//first check iTunes
NSString *iTunesServiceURL = [NSString stringWithFormat:iVersionAppLookupURLFormat, self.appStoreCountry];
Expand Down Expand Up @@ -861,14 +863,28 @@ - (void)checkForNewVersionInBackground
if (latestVersion)
{
//remove versions that are greater than latest in app store
plistVersions = [plistVersions mutableCopy];
NSMutableDictionary* plistVersionsTemp = [plistVersions mutableCopy];
for (NSString *version in [plistVersions keyEnumerator])
{
if ([version compareVersion:latestVersion] == NSOrderedDescending)
{
[(NSMutableDictionary *)plistVersions removeObjectForKey:version];
[(NSMutableDictionary *)plistVersionsTemp removeObjectForKey:version];
}
else
{
NSDictionary* tempVersionDict = [plistVersionsTemp objectForKey:version];
if([tempVersionDict isKindOfClass:[NSDictionary class]])
{
if ([[tempVersionDict objectForKey:@"level"] intValue] > remoteUpdateLevel && [version compareVersion:self.applicationVersion] == NSOrderedDescending){
remoteUpdateLevel = [[tempVersionDict objectForKey:@"level"] intValue];
NSLog(@"iVersion is changing update level to %d", remoteUpdateLevel);
}
[(NSMutableDictionary *)plistVersionsTemp setObject:[tempVersionDict objectForKey:@"details"] forKey:version];
}
}
}
plistVersions = [plistVersionsTemp copy];

}
if (!latestVersion || plistVersions[latestVersion] || !_useAppStoreDetailsIfNoPlistEntryFound)
{
Expand All @@ -883,6 +899,9 @@ - (void)checkForNewVersionInBackground
}
[self performSelectorOnMainThread:@selector(setDownloadError:) withObject:error waitUntilDone:YES];
[self performSelectorOnMainThread:@selector(setRemoteVersionsDict:) withObject:versions waitUntilDone:YES];
if(remoteUpdateLevel){
self.updateLevel = remoteUpdateLevel;
}
[self performSelectorOnMainThread:@selector(setLastChecked:) withObject:[NSDate date] waitUntilDone:YES];
[self performSelectorOnMainThread:@selector(downloadedVersionsData) withObject:nil waitUntilDone:YES];
}
Expand Down