diff options
author | Ilya Grechuhin <i.grechuhin@mapswithme.com> | 2015-06-05 15:33:39 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 02:50:00 +0300 |
commit | 1c41a86b08788af4238ec8bbda2acac6fdff3cc6 (patch) | |
tree | d7dc50652d0e72aaa699d1375f9727f7ec93abfe /iphone/Maps/Classes/MapsAppDelegate.mm | |
parent | cdfe5bd2b230ffdd501820c5842d2a53b8610e00 (diff) |
[ios] Fixed two alerts shown at the same time.
Diffstat (limited to 'iphone/Maps/Classes/MapsAppDelegate.mm')
-rw-r--r-- | iphone/Maps/Classes/MapsAppDelegate.mm | 78 |
1 files changed, 44 insertions, 34 deletions
diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index 642d91d6c5..e58b85d6ec 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -217,8 +217,7 @@ void InitLocalizedStrings() else { [self incrementSessionCount]; - [self shouldShowRateAlert]; - [self shouldShowFacebookAlert]; + [self showAlertIfRequired]; } [[NSUserDefaults standardUserDefaults] synchronize]; @@ -572,6 +571,14 @@ void InitLocalizedStrings() } } +- (void)showAlertIfRequired +{ + if ([self shouldShowRateAlert]) + [self performSelector:@selector(showRateAlert) withObject:self afterDelay:30.0]; + else if ([self shouldShowFacebookAlert]) + [self performSelector:@selector(showFacebookAlert) withObject:self afterDelay:30.0]; +} + #pragma mark - Facebook - (void)showFacebookAlert @@ -585,33 +592,36 @@ void InitLocalizedStrings() [[NSUserDefaults standardUserDefaults] setObject:NSDate.date forKey:kUDLastShareRequstDate]; } -- (void)shouldShowFacebookAlert +- (BOOL)shouldShowFacebookAlert { NSUInteger const kMaximumSessionCountForShowingShareAlert = 50; - NSUserDefaults *standartDefaults = [NSUserDefaults standardUserDefaults]; - BOOL alreadyShared = [standartDefaults boolForKey:kUDAlreadySharedKey]; - if (alreadyShared) - return; + NSUserDefaults const * const standartDefaults = [NSUserDefaults standardUserDefaults]; + if ([standartDefaults boolForKey:kUDAlreadySharedKey]) + return NO; - NSUInteger sessionCount = [standartDefaults integerForKey:kUDSessionsCountKey]; + NSUInteger const sessionCount = [standartDefaults integerForKey:kUDSessionsCountKey]; if (sessionCount > kMaximumSessionCountForShowingShareAlert) - return; + return NO; - NSDate *lastShareRequestDate = [standartDefaults objectForKey:kUDLastShareRequstDate]; - NSUInteger daysFromLastShareRequest = [self.class daysBetweenNowAndDate:lastShareRequestDate]; + NSDate * const lastShareRequestDate = [standartDefaults objectForKey:kUDLastShareRequstDate]; + NSUInteger const daysFromLastShareRequest = [MapsAppDelegate daysBetweenNowAndDate:lastShareRequestDate]; if (lastShareRequestDate != nil && daysFromLastShareRequest == 0) - return; + return NO; + + if (sessionCount == 30 || sessionCount == kMaximumSessionCountForShowingShareAlert) + return YES; - if (!self.userIsNew) + if (self.userIsNew) { - if (sessionCount == 5 || sessionCount == 30 || sessionCount == kMaximumSessionCountForShowingShareAlert) - [NSTimer scheduledTimerWithTimeInterval:30. target:self selector:@selector(showFacebookAlert) userInfo:nil repeats:NO]; + if (sessionCount == 12) + return YES; } else { - if (sessionCount == 10 || sessionCount == 30 || sessionCount == kMaximumSessionCountForShowingShareAlert) - [NSTimer scheduledTimerWithTimeInterval:30. target:self selector:@selector(showFacebookAlert) userInfo:nil repeats:NO]; + if (sessionCount == 5) + return YES; } + return NO; } #pragma mark - Rate @@ -627,36 +637,36 @@ void InitLocalizedStrings() [[NSUserDefaults standardUserDefaults] setObject:NSDate.date forKey:kUDLastRateRequestDate]; } -- (void)shouldShowRateAlert +- (BOOL)shouldShowRateAlert { NSUInteger const kMaximumSessionCountForShowingAlert = 21; - NSUserDefaults *standartDefaults = [NSUserDefaults standardUserDefaults]; - BOOL alreadyRated = [standartDefaults boolForKey:kUDAlreadyRatedKey]; - if (alreadyRated) - return; + NSUserDefaults const * const standartDefaults = [NSUserDefaults standardUserDefaults]; + if ([standartDefaults boolForKey:kUDAlreadyRatedKey]) + return NO; - NSUInteger sessionCount = [standartDefaults integerForKey:kUDSessionsCountKey]; + NSUInteger const sessionCount = [standartDefaults integerForKey:kUDSessionsCountKey]; if (sessionCount > kMaximumSessionCountForShowingAlert) - return; + return NO; - NSDate *lastRateRequestDate = [standartDefaults objectForKey:kUDLastRateRequestDate]; - NSUInteger daysFromLastRateRequest = [self.class daysBetweenNowAndDate:lastRateRequestDate]; + NSDate * const lastRateRequestDate = [standartDefaults objectForKey:kUDLastRateRequestDate]; + NSUInteger const daysFromLastRateRequest = [MapsAppDelegate daysBetweenNowAndDate:lastRateRequestDate]; // Do not show more than one alert per day. if (lastRateRequestDate != nil && daysFromLastRateRequest == 0) - return; + return NO; - if (!self.userIsNew) + if (self.userIsNew) { - // User just got updated. Show alert, if it first session or if 90 days spent. - if (daysFromLastRateRequest >= 90 || daysFromLastRateRequest == 0) - [NSTimer scheduledTimerWithTimeInterval:30. target:self selector:@selector(showRateAlert) userInfo:nil repeats:NO]; + // It's new user. + if (sessionCount == 3 || sessionCount == 10 || sessionCount == kMaximumSessionCountForShowingAlert) + return YES; } else { - // It's new user. - if (sessionCount == 3 || sessionCount == 10 || sessionCount == kMaximumSessionCountForShowingAlert) - [NSTimer scheduledTimerWithTimeInterval:30. target:self selector:@selector(showRateAlert) userInfo:nil repeats:NO]; + // User just got updated. Show alert, if it first session or if 90 days spent. + if (daysFromLastRateRequest >= 90 || daysFromLastRateRequest == 0) + return YES; } + return NO; } - (BOOL)userIsNew |