diff --git a/iphone/Maps/Bookmarks/BookmarksRootVC.mm b/iphone/Maps/Bookmarks/BookmarksRootVC.mm index de0c68faab..0db727b339 100644 --- a/iphone/Maps/Bookmarks/BookmarksRootVC.mm +++ b/iphone/Maps/Bookmarks/BookmarksRootVC.mm @@ -89,11 +89,8 @@ { // Invert visibility bool visible = !cat->IsVisible(); - [[Statistics instance] logEvent:kStatBookmarks - withParameters:@{ - kStatAction : kStatToggleVisibility, - kStatValue : visible ? kStatVisible : kStatHidden - }]; + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatToggleVisibility) + withParameters:@{kStatValue : visible ? kStatVisible : kStatHidden}]; cell.imageView.image = [UIImage imageNamed:(visible ? @"ic_show_light" : @"ic_hide_light")]; cat->SetVisible(visible); cat->SaveToKMLFile(); @@ -225,7 +222,7 @@ { if (editingStyle == UITableViewCellEditingStyleDelete) { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatRemove}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatRemove)]; [[NSNotificationCenter defaultCenter] postNotificationName:BOOKMARK_CATEGORY_DELETED_NOTIFICATION object:@(indexPath.row)]; Framework & f = GetFramework(); f.DeleteBmCategory(indexPath.row); @@ -288,7 +285,7 @@ // To hide keyboard and apply changes - (BOOL)textFieldShouldReturn:(UITextField *)textField { - [[Statistics instance] logEvent:kStatBookmarks withParameters:@{kStatAction : kStatRename}]; + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatRename)]; if (textField.text.length == 0) return YES; diff --git a/iphone/Maps/Bookmarks/BookmarksVC.mm b/iphone/Maps/Bookmarks/BookmarksVC.mm index 3def7397ac..a7c1f68340 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.mm +++ b/iphone/Maps/Bookmarks/BookmarksVC.mm @@ -76,11 +76,8 @@ extern NSString * const kBookmarksChangedNotification = @"BookmarksChangedNotifi - (void)onVisibilitySwitched:(UISwitch *)sender { - [[Statistics instance] logEvent:kStatBookmarks - withParameters:@{ - kStatAction : kStatToggleVisibility, - kStatValue : sender.on ? kStatVisible : kStatHidden - }]; + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatToggleVisibility) + withParameters:@{kStatValue : sender.on ? kStatVisible : kStatHidden}]; BookmarkCategory * cat = GetFramework().GetBmCategory(m_categoryIndex); cat->SetVisible(sender.on); cat->SaveToKMLFile(); @@ -258,7 +255,7 @@ extern NSString * const kBookmarksChangedNotification = @"BookmarksChangedNotifi ASSERT(bm, ("NULL bookmark")); if (bm) { - [[Statistics instance] logEvent:kStatBookmarks withParameters:@{kStatAction : kStatShowOnMap}]; + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatShowOnMap)]; // Same as "Close". MapViewController * mapVC = self.navigationController.viewControllers.firstObject; mapVC.controlsManager.searchHidden = YES; @@ -272,7 +269,7 @@ extern NSString * const kBookmarksChangedNotification = @"BookmarksChangedNotifi BookmarkCategory const * cat = GetFramework().GetBmCategory(m_categoryIndex); if (cat) { - [[Statistics instance] logEvent:kStatBookmarks withParameters:@{kStatAction : kStatExport}]; + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatExport)]; NSMutableString * catName = [NSMutableString stringWithUTF8String:cat->GetName().c_str()]; if (![catName length]) [catName setString:@"MapsMe"]; @@ -293,8 +290,9 @@ extern NSString * const kBookmarksChangedNotification = @"BookmarksChangedNotifi - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { + [[Statistics instance] logEvent:kStatEventName(kStatBookmarks, kStatExport) + withParameters:@{kStatValue : kStatKML}]; [self dismissViewControllerAnimated:YES completion:nil]; - [[Statistics instance] logEvent:@"KML Export"]; } - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath diff --git a/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm b/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm index dc17d77e65..2a2550581f 100644 --- a/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/DefaultAlert/MWMDefaultAlert.mm @@ -126,8 +126,7 @@ static NSString * const kDefaultAlertNibName = @"MWMDefaultAlert"; + (instancetype)defaultAlertWithTitle:(nonnull NSString *)title message:(nullable NSString *)message rightButtonTitle:(nonnull NSString *)rightButtonTitle leftButtonTitle:(nullable NSString *)leftButtonTitle rightButtonAction:(nullable RightButtonAction)action { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMDefaultAlert * alert = [[[NSBundle mainBundle] loadNibNamed:kDefaultAlertNibName owner:self options:nil] firstObject]; alert.titleLabel.localizedText = title; alert.messageLabel.localizedText = message; @@ -154,8 +153,7 @@ static NSString * const kDefaultAlertNibName = @"MWMDefaultAlert"; - (IBAction)rightButtonTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; if (self.rightButtonAction) self.rightButtonAction(); [self close]; @@ -163,8 +161,7 @@ static NSString * const kDefaultAlertNibName = @"MWMDefaultAlert"; - (IBAction)leftButtonTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [self close]; } diff --git a/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloadTransitMapAlert.mm b/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloadTransitMapAlert.mm index 2b396d1c6a..1661eeaf66 100644 --- a/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloadTransitMapAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloadTransitMapAlert.mm @@ -89,8 +89,7 @@ static NSString * const kStatisticsEvent = @"Map download Alert"; routes:(vector const &)routes code:(routing::IRouter::ResultCode)code { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMDownloadTransitMapAlert * alert = [self alertWithMaps:maps routes:routes]; switch (code) { @@ -157,15 +156,13 @@ static NSString * const kStatisticsEvent = @"Map download Alert"; - (IBAction)notNowButtonTap:(id)sender { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [self close]; } - (IBAction)downloadButtonTap:(id)sender { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; [self downloadMaps]; } diff --git a/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloaderDialogHeader.mm b/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloaderDialogHeader.mm index 942b353703..c39b076248 100644 --- a/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloaderDialogHeader.mm +++ b/iphone/Maps/Classes/CustomAlert/DownloadTransitMapsAlert/MWMDownloaderDialogHeader.mm @@ -1,6 +1,7 @@ #import "Common.h" #import "MWMDownloaderDialogHeader.h" #import "MWMDownloadTransitMapAlert.h" +#import "Statistics.h" static NSString * const kDownloaderDialogHeaderNibName = @"MWMDownloaderDialogHeader"; @@ -29,6 +30,8 @@ static NSString * const kDownloaderDialogHeaderNibName = @"MWMDownloaderDialogHe - (IBAction)headerButtonTap:(UIButton *)sender { BOOL const currentState = sender.selected; + [[Statistics instance] logEvent:kStatEventName(kStatDownloaderDialog, kStatExpand) + withParameters:@{kStatValue : currentState ? kStatOff : kStatOn}]; sender.selected = !currentState; self.dividerView.hidden = currentState; [UIView animateWithDuration:kDefaultAnimationDuration animations:^ diff --git a/iphone/Maps/Classes/CustomAlert/FacebookAlert/MWMFacebookAlert.mm b/iphone/Maps/Classes/CustomAlert/FacebookAlert/MWMFacebookAlert.mm index 472032006d..d3301ab15b 100644 --- a/iphone/Maps/Classes/CustomAlert/FacebookAlert/MWMFacebookAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/FacebookAlert/MWMFacebookAlert.mm @@ -19,9 +19,10 @@ static NSString * const kStatisticsEvent = @"Facebook Alert"; + (MWMFacebookAlert *)alert { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; - MWMFacebookAlert * alert = [[[NSBundle mainBundle] loadNibNamed:kFacebookAlertNibName owner:self options:nil] firstObject]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; + MWMFacebookAlert * alert = [[[NSBundle mainBundle] loadNibNamed:kFacebookAlertNibName + owner:self + options:nil] firstObject]; return alert; } @@ -29,8 +30,7 @@ static NSString * const kStatisticsEvent = @"Facebook Alert"; - (IBAction)shareButtonTap:(id)sender { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; [Alohalytics logEvent:kFacebookInviteEventName withValue:@"shareTap"]; [self close]; [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kUDAlreadySharedKey]; @@ -44,8 +44,7 @@ static NSString * const kStatisticsEvent = @"Facebook Alert"; - (IBAction)notNowButtonTap:(id)sender { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [Alohalytics logEvent:kFacebookInviteEventName withValue:@"notNowTap"]; [self close]; } diff --git a/iphone/Maps/Classes/CustomAlert/LocationAlert/MWMLocationAlert.mm b/iphone/Maps/Classes/CustomAlert/LocationAlert/MWMLocationAlert.mm index a1daf8b8f9..91eefa110f 100644 --- a/iphone/Maps/Classes/CustomAlert/LocationAlert/MWMLocationAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/LocationAlert/MWMLocationAlert.mm @@ -9,8 +9,7 @@ static NSString * const kStatisticsEvent = @"Location Alert"; + (instancetype)alert { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMLocationAlert * alert = [[[NSBundle mainBundle] loadNibNamed:kLocationAlertNibName owner:nil options:nil] firstObject]; [alert setNeedsCloseAlertAfterEnterBackground]; return alert; @@ -18,16 +17,14 @@ static NSString * const kStatisticsEvent = @"Location Alert"; - (IBAction)settingsTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; [self close]; } - (IBAction)closeTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [self close]; } diff --git a/iphone/Maps/Classes/CustomAlert/PedestrianShareAlert/MWMPedestrianShareAlert.mm b/iphone/Maps/Classes/CustomAlert/PedestrianShareAlert/MWMPedestrianShareAlert.mm index e735ecf55d..39be731da7 100644 --- a/iphone/Maps/Classes/CustomAlert/PedestrianShareAlert/MWMPedestrianShareAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/PedestrianShareAlert/MWMPedestrianShareAlert.mm @@ -27,8 +27,7 @@ static NSString * const kStatisticsEvent = @"Pedestrian Share Alert"; + (MWMPedestrianShareAlert *)alert:(BOOL)isFirstLaunch { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMPedestrianShareAlert * view = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class) owner:self options:nil].firstObject; view.isFirstLaunch = isFirstLaunch; @@ -51,8 +50,7 @@ static NSString * const kStatisticsEvent = @"Pedestrian Share Alert"; - (IBAction)shareButtonTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; [Alohalytics logEvent:kStatisticsEvent withValue:@"shareTap"]; MWMActivityViewController * shareVC = [MWMActivityViewController shareControllerForPedestrianRoutesToast]; if (IPAD && !isIOSVersionLessThan(8)) @@ -72,8 +70,7 @@ static NSString * const kStatisticsEvent = @"Pedestrian Share Alert"; - (IBAction)doneButtonTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [Alohalytics logEvent:kStatisticsEvent withValue:@"doneTap"]; [self close]; } diff --git a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm index 85f24666cb..6fdb5e381d 100644 --- a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm @@ -33,8 +33,7 @@ static NSString * const kStatisticsEvent = @"Rate Alert"; + (instancetype)alert { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMRateAlert * alert = [[[NSBundle mainBundle] loadNibNamed:kRateAlertNibName owner:self options:nil] firstObject]; [alert configureButtons]; return alert; @@ -113,8 +112,7 @@ static NSString * const kStatisticsEvent = @"Rate Alert"; - (IBAction)doneTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}]; [Alohalytics logEvent:kRateAlertEventName withValue:@"notNowTap"]; [self close]; } @@ -122,12 +120,8 @@ static NSString * const kStatisticsEvent = @"Rate Alert"; - (IBAction)rateTap { NSUInteger const tag = self.selectedTag; - [[Statistics instance] logEvent:kStatAlert - withParameters:@{ - kStatName : kStatisticsEvent, - kStatAction : kStatRate, - kStatValue : @(tag).stringValue - }]; + [[Statistics instance] logEvent:kStatEventName(kStatisticsEvent, kStatRate) + withParameters:@{kStatValue : @(tag).stringValue}]; if (tag == 5) { [[UIApplication sharedApplication] rateVersionFrom:@"ios_pro_popup"]; @@ -150,8 +144,7 @@ static NSString * const kStatisticsEvent = @"Rate Alert"; - (void)sendFeedback { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatSendEmail}]; + [[Statistics instance] logEvent:kStatEventName(kStatisticsEvent, kStatSendEmail)]; [Alohalytics logEvent:kRateAlertEventName withValue:@"sendFeedback"]; self.alpha = 0.; self.alertController.view.alpha = 0.; @@ -203,7 +196,7 @@ static NSString * const kStatisticsEvent = @"Rate Alert"; { [self.alertController.ownerViewController dismissViewControllerAnimated:YES completion:^ { - [Statistics.instance logEvent:[NSString stringWithFormat:@"%@ - %@", kRateAlertEventName, @"close"]]; + [[Statistics instance] logEvent:kStatEventName(kStatisticsEvent, kStatClose)]; [self close]; }]; } diff --git a/iphone/Maps/Classes/CustomAlert/RoutingDisclaimerAlert/MWMRoutingDisclaimerAlert.mm b/iphone/Maps/Classes/CustomAlert/RoutingDisclaimerAlert/MWMRoutingDisclaimerAlert.mm index a5431fd87e..73a687ec40 100644 --- a/iphone/Maps/Classes/CustomAlert/RoutingDisclaimerAlert/MWMRoutingDisclaimerAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/RoutingDisclaimerAlert/MWMRoutingDisclaimerAlert.mm @@ -19,8 +19,7 @@ static NSString * const kStatisticsEvent = @"Routing Disclaimer Alert"; + (instancetype)alertWithInitialOrientation:(UIInterfaceOrientation)orientation { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatOpen}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}]; MWMRoutingDisclaimerAlert * alert = [[[NSBundle mainBundle] loadNibNamed:[MWMRoutingDisclaimerAlert className] owner:nil options:nil] firstObject]; @@ -45,8 +44,7 @@ static NSString * const kStatisticsEvent = @"Routing Disclaimer Alert"; - (IBAction)okTap { - [[Statistics instance] logEvent:kStatAlert - withParameters:@{kStatName : kStatisticsEvent, kStatAction : kStatApply}]; + [[Statistics instance] logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}]; [self close]; } diff --git a/iphone/Maps/Classes/CustomViews/DownloadMapRequest/MWMDownloadMapRequest.mm b/iphone/Maps/Classes/CustomViews/DownloadMapRequest/MWMDownloadMapRequest.mm index 362506c5b8..a235c3d133 100644 --- a/iphone/Maps/Classes/CustomViews/DownloadMapRequest/MWMDownloadMapRequest.mm +++ b/iphone/Maps/Classes/CustomViews/DownloadMapRequest/MWMDownloadMapRequest.mm @@ -4,6 +4,7 @@ #import "MWMCircularProgress.h" #import "MWMDownloadMapRequest.h" #import "MWMDownloadMapRequestView.h" +#import "Statistics.h" #include "Framework.h" #include "storage/index.hpp" @@ -119,6 +120,8 @@ - (void)progressButtonPressed:(nonnull MWMCircularProgress *)progress { + [[Statistics instance] logEvent:kStatEventName(kStatDownloadRequest, kStatButton) + withParameters:@{kStatValue : kStatProgress}]; auto & activeMapLayout = GetFramework().GetCountryTree().GetActiveMapLayout(); if (progress.state == MWMCircularProgressStateFailed) { @@ -136,6 +139,7 @@ - (IBAction)downloadMapTouchUpInside:(nonnull UIButton *)sender { + [[Statistics instance] logEvent:kStatEventName(kStatDownloadRequest, kStatDownloadMap)]; auto const mapType = self.downloadRoutesButton.selected ? MapOptions::MapWithCarRouting : MapOptions::Map; GetFramework().GetCountryTree().GetActiveMapLayout().DownloadMap(self.currentCountryIndex, mapType); self.progressView.progress = 0.0; @@ -145,6 +149,7 @@ - (IBAction)downloadRoutesTouchUpInside:(nonnull UIButton *)sender { + [[Statistics instance] logEvent:kStatEventName(kStatDownloadRequest, kStatDownloadRoute)]; sender.selected = !sender.selected; [self.downloadMapButton setTitle:[NSString stringWithFormat:@"%@ (%@)", L(@"downloader_download_map"), @@ -154,6 +159,7 @@ - (IBAction)selectMapTouchUpInside:(nonnull UIButton *)sender { + [[Statistics instance] logEvent:kStatEventName(kStatDownloadRequest, kStatSelectMap)]; [self.delegate selectMapsAction]; } diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/APIBar/MWMAPIBar.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/APIBar/MWMAPIBar.mm index 13b00b4bb5..3820836faf 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/APIBar/MWMAPIBar.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/APIBar/MWMAPIBar.mm @@ -1,6 +1,7 @@ #import "Common.h" #import "MWMAPIBar.h" #import "MWMAPIBarView.h" +#import "Statistics.h" #include "Framework.h" @@ -51,6 +52,7 @@ static NSString * const kKeyPath = @"subviews"; - (IBAction)back { + [[Statistics instance] logEvent:kStatEventName(kStatAPI, kStatBack)]; auto & f = GetFramework(); auto & bm = f.GetBalloonManager(); bm.RemovePin(); diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index 20d573b975..dfc74de48d 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -404,14 +404,14 @@ extern NSString * const kAlohalyticsTapEventKey; BOOL const isSourceMyPosition = self.routeSource.IsMyPosition(); BOOL const isDestinationMyPosition = self.routeDestination.IsMyPosition(); if (isSourceMyPosition) - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{kStatAction : kStatGo, kStatValue : kStatFromMyPosition}]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatGo) + withParameters:@{kStatValue : kStatFromMyPosition}]; else if (isDestinationMyPosition) - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{kStatAction : kStatGo, kStatValue : kStatToMyPosition}]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatGo) + withParameters:@{kStatValue : kStatToMyPosition}]; else - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{kStatAction : kStatGo, kStatValue : kStatPointToPoint}]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatGo) + withParameters:@{kStatValue : kStatPointToPoint}]; if (!isSourceMyPosition) { @@ -442,7 +442,7 @@ extern NSString * const kAlohalyticsTapEventKey; - (void)didCancelRouting { - [[Statistics instance] logEvent:kStatPointToPoint withParameters:@{kStatAction : kStatClose}]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatClose)]; [[MapsAppDelegate theApp].m_locationManager stop:self.navigationManager]; self.navigationManager.state = MWMNavigationDashboardStateHidden; GetFramework().CloseRouting(); @@ -455,8 +455,7 @@ extern NSString * const kAlohalyticsTapEventKey; - (void)swapPointsAndRebuildRouteIfPossible { - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{kStatAction : kStatSwapRoutingPoints}]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatSwapRoutingPoints)]; swap(_routeSource, _routeDestination); [self buildRoute]; @@ -466,11 +465,8 @@ extern NSString * const kAlohalyticsTapEventKey; - (void)didStartEditingRoutePoint:(BOOL)isSource { - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{ - kStatAction : kStatSearch, - kStatValue : (isSource ? kStatSource : kStatDestination) - }]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatSearch) + withParameters:@{kStatValue : (isSource ? kStatSource : kStatDestination)}]; MapsAppDelegate.theApp.routingPlaneMode = isSource ? MWMRoutingPlaneModeSearchSource : MWMRoutingPlaneModeSearchDestination; self.searchManager.state = MWMSearchManagerStateDefault; } diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/MWMSearchManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/MWMSearchManager.mm index 3f6a1e8700..b7a2084270 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/MWMSearchManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/MWMSearchManager.mm @@ -109,6 +109,7 @@ extern NSString * const kSearchStateKey = @"SearchStateKey"; - (IBAction)cancelButtonPressed { + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatCancel)]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"searchCancel"]; self.state = MWMSearchManagerStateHidden; MapsAppDelegate * a = MapsAppDelegate.theApp; diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm index 83f2dab162..263c40f91f 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm @@ -55,8 +55,8 @@ forRowAtIndexPath:(NSIndexPath *)indexPath - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString * string = @(categoriesNames[indexPath.row]); - [[Statistics instance] logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectResult, kStatValue : string}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectResult) + withParameters:@{kStatValue : string}]; [self.delegate searchText:[L(string) stringByAppendingString:@" "] forInputLocale:nil]; } diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/HistoryTab/MWMSearchHistoryManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/HistoryTab/MWMSearchHistoryManager.mm index d719c1d0f0..9690e120d0 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/HistoryTab/MWMSearchHistoryManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/HistoryTab/MWMSearchHistoryManager.mm @@ -145,22 +145,21 @@ forRowAtIndexPath:(NSIndexPath *)indexPath { search::QuerySaver::TSearchRequest const & query = [self queryAtIndex:isRouteSearch ? indexPath.row - 1 : indexPath.row]; NSString * queryText = @(query.second.c_str()); - [[Statistics instance] logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectResult, kStatValue : queryText}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectResult) + withParameters:@{kStatValue : queryText}]; [self.delegate searchText:queryText forInputLocale:@(query.first.c_str())]; } else { if (isRouteSearch) { - [[Statistics instance] - logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectResult, kStatValue : kStatMyPosition}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectResult) + withParameters:@{kStatValue : kStatMyPosition}]; [self.delegate tapMyPositionFromHistory]; return; } - [[Statistics instance] logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectResult, kStatValue : kStatClear}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectResult) + withParameters:@{kStatValue : kStatClear}]; f.ClearSearchHistory(); MWMSearchTabbedCollectionViewCell * cell = self.cell; [UIView animateWithDuration:kDefaultAnimationDuration animations:^ diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/MWMSearchTabbedViewController.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/MWMSearchTabbedViewController.mm index 62fa93204f..91a0753301 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/MWMSearchTabbedViewController.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TabbedView/MWMSearchTabbedViewController.mm @@ -140,14 +140,12 @@ BOOL isOffsetInButton(CGFloat offset, MWMSearchTabButtonsView * button) switch (btn.tag) { case MWMSearchTabbedViewCellHistory: - [[Statistics instance] - logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectTab, kStatValue : kStatHistory}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectTab) + withParameters:@{kStatValue : kStatHistory}]; break; case MWMSearchTabbedViewCellCategories: - [[Statistics instance] - logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectTab, kStatValue : kStatCategories}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectTab) + withParameters:@{kStatValue : kStatCategories}]; break; default: break; diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TableView/MWMSearchTableViewController.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TableView/MWMSearchTableViewController.mm index 5d6a67ac72..8d047544f0 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TableView/MWMSearchTableViewController.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Search/TableView/MWMSearchTableViewController.mm @@ -239,9 +239,8 @@ forRowAtIndexPath:(NSIndexPath *)indexPath if (cellType == MWMSearchTableCellTypeSuggestion) { NSString * suggestionString = @(result.GetSuggestionString()); - [[Statistics instance] - logEvent:kStatSearch - withParameters:@{kStatAction : kStatSelectResult, kStatValue : suggestionString}]; + [[Statistics instance] logEvent:kStatEventName(kStatSearch, kStatSelectResult) + withParameters:@{kStatValue : suggestionString}]; [self.delegate searchText:suggestionString forInputLocale:nil]; } else diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm index 29ad043c33..a7984be027 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm @@ -1,5 +1,7 @@ #import "MWMZoomButtons.h" #import "MWMZoomButtonsView.h" +#import "Statistics.h" + #import "3party/Alohalytics/src/alohalytics_objc.h" #include "Framework.h" @@ -55,12 +57,14 @@ extern NSString * const kAlohalyticsTapEventKey; - (void)zoomIn { + [[Statistics instance] logEvent:kStatEventName(kStatZoom, kStatIn)]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"+"]; [self zoom:2.0]; } - (void)zoomOut { + [[Statistics instance] logEvent:kStatEventName(kStatZoom, kStatOut)]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"-"]; [self zoom:0.5]; } diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index 9762df1124..2a9b5c7db4 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -232,6 +232,8 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa - (void)progressButtonPressed:(nonnull MWMCircularProgress *)progress { + [[Statistics instance] logEvent:kStatEventName(kStatNavigationDashboard, kStatButton) + withParameters:@{kStatValue : kStatProgress}]; MWMCircularProgressState const s = progress.state; if (s == MWMCircularProgressStateSelected || s == MWMCircularProgressStateCompleted) return; @@ -275,6 +277,7 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa - (IBAction)navigationCancelPressed:(UIButton *)sender { + [[Statistics instance] logEvent:kStatEventName(kStatNavigationDashboard, kStatClose)]; if (IPAD && self.state != MWMNavigationDashboardStateNavigation) [self.delegate routePreviewDidChangeFrame:{}]; [self removePanel:self.nextTurnPanel]; @@ -286,6 +289,7 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa - (IBAction)soundTap:(UIButton *)sender { BOOL const isEnable = !sender.selected; + [[Statistics instance] logEvent:kStatEventName(kStatNavigationDashboard, isEnable ? kStatOn : kStatOff)]; MWMTextToSpeech * tts = [MWMTextToSpeech tts]; if (isEnable) [tts enable]; @@ -298,6 +302,7 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa - (IBAction)navigationGoPressed:(UIButton *)sender { + [[Statistics instance] logEvent:kStatEventName(kStatNavigationDashboard, kStatGo)]; if ([self.delegate didStartFollowing]) self.state = MWMNavigationDashboardStateNavigation; } diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Sound/MWMTextToSpeech.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Sound/MWMTextToSpeech.mm index ec02e619ab..792e54ff69 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Sound/MWMTextToSpeech.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Sound/MWMTextToSpeech.mm @@ -1,6 +1,7 @@ #import "Common.h" -#import #import "MWMTextToSpeech.h" +#import "Statistics.h" +#import #include "Framework.h" #include "sound/tts/languages.hpp" @@ -78,6 +79,8 @@ extern NSString * const kUserDafaultsNeedToEnableTTS = @"UserDefaultsNeedToEnabl - (void)setNotificationsLocale:(NSString *)locale { + [[Statistics instance] logEvent:kStatEventName(kStatTTSSettings, kStatChangeLanguage) + withParameters:@{kStatValue : locale}]; NSUserDefaults * ud = [NSUserDefaults standardUserDefaults]; [ud setObject:locale forKey:kUserDefaultsTTSLanguage]; [ud synchronize]; diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMRoutePreview.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMRoutePreview.mm index 58cd15bc3d..240133585a 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMRoutePreview.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMRoutePreview.mm @@ -247,11 +247,8 @@ static CGFloat const kAdditionalHeight = 20.; - (IBAction)extendTap { BOOL const isExtended = !self.extendButton.selected; - [[Statistics instance] logEvent:kStatPointToPoint - withParameters:@{ - kStatAction : kStatExpand, - kStatValue : (isExtended ? kStatYes : kStatNo) - }]; + [[Statistics instance] logEvent:kStatEventName(kStatPointToPoint, kStatExpand) + withParameters:@{kStatValue : (isExtended ? kStatYes : kStatNo)}]; self.extendButton.selected = isExtended; [self layoutIfNeeded]; [self setupActualHeight]; diff --git a/iphone/Maps/Classes/MWMBasePlacePageView.mm b/iphone/Maps/Classes/MWMBasePlacePageView.mm index afaf0a270e..2be5dbacc9 100644 --- a/iphone/Maps/Classes/MWMBasePlacePageView.mm +++ b/iphone/Maps/Classes/MWMBasePlacePageView.mm @@ -152,8 +152,8 @@ static CGFloat const kTitleBottomOffset = 2.; - (void)addBookmark { - [[Statistics instance] logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatToggleBookmark, kStatValue : kStatAdd}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatToggleBookmark) + withParameters:@{kStatValue : kStatAdd}]; self.entity.type = MWMPlacePageEntityTypeBookmark; [self.typeDescriptionView removeFromSuperview]; self.typeDescriptionView = nil; @@ -164,8 +164,8 @@ static CGFloat const kTitleBottomOffset = 2.; - (void)removeBookmark { - [[Statistics instance] logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatToggleBookmark, kStatValue : kStatRemove}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatToggleBookmark) + withParameters:@{kStatValue : kStatRemove}]; self.entity.type = MWMPlacePageEntityTypeRegular; [self.entity removeBookmarkFromTypes]; [self configure]; @@ -181,7 +181,7 @@ static CGFloat const kTitleBottomOffset = 2.; - (IBAction)directionButtonTap { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatCompass}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatCompass)]; [self.ownerPlacePage.manager showDirectionViewWithTitle:self.titleLabel.text type:self.typeLabel.text]; } diff --git a/iphone/Maps/Classes/MWMBookmarkColorViewController.mm b/iphone/Maps/Classes/MWMBookmarkColorViewController.mm index 636dab8fd4..c8fc77d400 100644 --- a/iphone/Maps/Classes/MWMBookmarkColorViewController.mm +++ b/iphone/Maps/Classes/MWMBookmarkColorViewController.mm @@ -122,9 +122,8 @@ static NSString * const kBookmarkColorCellIdentifier = @"MWMBookmarkColorCell"; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString * bookmarkColor = kBookmarkColorsVariant[indexPath.row]; - [[Statistics instance] - logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatChangeBookmarkColor, kStatValue : bookmarkColor}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatChangeBookmarkColor) + withParameters:@{kStatValue : bookmarkColor}]; self.colorWasChanged = YES; self.placePageManager.entity.bookmarkColor = bookmarkColor; if (!self.iPadOwnerNavigationController) diff --git a/iphone/Maps/Classes/MWMPlacePage.mm b/iphone/Maps/Classes/MWMPlacePage.mm index c6761ad3eb..9adaab921c 100644 --- a/iphone/Maps/Classes/MWMPlacePage.mm +++ b/iphone/Maps/Classes/MWMPlacePage.mm @@ -193,7 +193,7 @@ static NSString * const kPlacePageViewCenterKeyPath = @"center"; - (void)willStartEditingBookmarkTitle { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatRename}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatRename)]; // This method should be ovverriden. } diff --git a/iphone/Maps/Classes/MWMPlacePageBookmarkCell.mm b/iphone/Maps/Classes/MWMPlacePageBookmarkCell.mm index cd1b2c04dc..f8b4fb77ab 100644 --- a/iphone/Maps/Classes/MWMPlacePageBookmarkCell.mm +++ b/iphone/Maps/Classes/MWMPlacePageBookmarkCell.mm @@ -139,14 +139,14 @@ static NSUInteger sWebViewHeight = 0; - (IBAction)categoryButtonTap { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatChangeBookmarkGroup}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatChangeBookmarkGroup)]; [self.placePage changeBookmarkCategory]; [self.title resignFirstResponder]; } - (IBAction)editTap { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatChangeBookmarkDescription}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatChangeBookmarkDescription)]; [self.placePage changeBookmarkDescription]; [self.title resignFirstResponder]; } diff --git a/iphone/Maps/Classes/MWMPlacePageInfoCell.mm b/iphone/Maps/Classes/MWMPlacePageInfoCell.mm index 4ce5e26359..da40b088af 100644 --- a/iphone/Maps/Classes/MWMPlacePageInfoCell.mm +++ b/iphone/Maps/Classes/MWMPlacePageInfoCell.mm @@ -85,16 +85,16 @@ extern NSString * const kUserDefaultsLatLonAsDMSKey; { case MWMPlacePageMetadataTypeURL: case MWMPlacePageMetadataTypeWebsite: - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatOpenSite}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatOpenSite)]; break; case MWMPlacePageMetadataTypeEmail: - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatSendEmail}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatSendEmail)]; break; case MWMPlacePageMetadataTypePhoneNumber: - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatCallPhoneNumber}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatCallPhoneNumber)]; break; case MWMPlacePageMetadataTypeCoordinate: - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatToggleCoordinates}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatToggleCoordinates)]; break; default: break; diff --git a/iphone/Maps/Classes/MWMPlacePageNavigationBar.mm b/iphone/Maps/Classes/MWMPlacePageNavigationBar.mm index f43f5acf1c..623d33c3ce 100644 --- a/iphone/Maps/Classes/MWMPlacePageNavigationBar.mm +++ b/iphone/Maps/Classes/MWMPlacePageNavigationBar.mm @@ -1,9 +1,10 @@ #import "Common.h" -#import "MWMPlacePageNavigationBar.h" -#import "MWMiPhonePortraitPlacePage.h" -#import "MWMPlacePageViewManager.h" #import "MWMBasePlacePageView.h" +#import "MWMiPhonePortraitPlacePage.h" #import "MWMPlacePageEntity.h" +#import "MWMPlacePageNavigationBar.h" +#import "MWMPlacePageViewManager.h" +#import "Statistics.h" #import static NSString * const kPlacePageNavigationBarNibName = @"PlacePageNavigationBar"; @@ -99,6 +100,7 @@ static inline CGPoint const dismissCenter(CGFloat xPosition) - (IBAction)backTap:(id)sender { + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBack)]; [self dismiss]; [self.placePage.manager refreshPlacePage]; } diff --git a/iphone/Maps/Classes/MWMPlacePageViewManager.mm b/iphone/Maps/Classes/MWMPlacePageViewManager.mm index cb1198a13d..20a97f827d 100644 --- a/iphone/Maps/Classes/MWMPlacePageViewManager.mm +++ b/iphone/Maps/Classes/MWMPlacePageViewManager.mm @@ -190,8 +190,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)buildRoute { - [[Statistics instance] logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatBuildRoute, kStatValue : kStatDestination}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) + withParameters:@{kStatValue : kStatDestination}]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"ppRoute"]; m2::PointD const & destination = m_userMark->GetUserMark()->GetOrg(); m2::PointD const myPosition([MapsAppDelegate theApp].m_locationManager.lastLocation.mercator); @@ -201,8 +201,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)routeFrom { - [[Statistics instance] logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatBuildRoute, kStatValue : kStatSource}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) + withParameters:@{kStatValue : kStatSource}]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"ppRoute"]; [self.delegate buildRouteFrom:self.target]; [self dismissPlacePage]; @@ -210,8 +210,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)routeTo { - [[Statistics instance] logEvent:kStatPlacePage - withParameters:@{kStatAction : kStatBuildRoute, kStatValue : kStatDestination}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) + withParameters:@{kStatValue : kStatDestination}]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"ppRoute"]; [self.delegate buildRouteTo:self.target]; [self dismissPlacePage]; @@ -228,7 +228,7 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)share { - [[Statistics instance] logEvent:kStatPlacePage withParameters:@{kStatAction : kStatShare}]; + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatShare)]; [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"ppShare"]; MWMPlacePageEntity * entity = self.entity; NSString * title = entity.bookmarkTitle ? entity.bookmarkTitle : entity.title; @@ -243,6 +243,7 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)apiBack { + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatAPI)]; ApiMarkPoint const * p = static_cast(m_userMark->GetUserMark()); NSURL * url = [NSURL URLWithString:@(GetFramework().GenerateApiBackUrl(*p).c_str())]; [[UIApplication sharedApplication] openURL:url]; @@ -258,6 +259,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)addBookmark { + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBookmarks) + withParameters:@{kStatValue : kStatAdd}]; Framework & f = GetFramework(); BookmarkData data = BookmarkData(self.entity.title.UTF8String, f.LastEditedBMType()); size_t const categoryIndex = f.LastEditedBMCategory(); @@ -278,6 +281,8 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState) - (void)removeBookmark { + [[Statistics instance] logEvent:kStatEventName(kStatPlacePage, kStatBookmarks) + withParameters:@{kStatValue : kStatRemove}]; Framework & f = GetFramework(); BookmarkCategory * bookmarkCategory = f.GetBookmarkManager().GetBmCategory(self.entity.bac.first); UserMark const * bookmark = bookmarkCategory->GetBookmark(self.entity.bac.second); diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index 560cb0fd60..248b597879 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -141,7 +141,7 @@ void InitLocalizedStrings() - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { - [Statistics.instance logEvent:@"Push received" withParameters:userInfo]; + [[Statistics instance] logEvent:kStatEventName(kStatApplication, kStatPushReceived) withParameters:userInfo]; if (![self handleURLPush:userInfo]) [PFPush handlePush:userInfo]; completionHandler(UIBackgroundFetchResultNoData); @@ -269,11 +269,8 @@ void InitLocalizedStrings() { if (f.ShowMapForURL([m_geoURL UTF8String])) { - if ([m_scheme isEqualToString:@"geo"]) - [[Statistics instance] logEvent:@"geo Import"]; - if ([m_scheme isEqualToString:@"ge0"]) - [[Statistics instance] logEvent:@"ge0(zero) Import"]; - + [[Statistics instance] logEvent:kStatEventName(kStatApplication, kStatImport) + withParameters:@{kStatValue : m_scheme}]; [self showMap]; } } @@ -293,7 +290,8 @@ void InitLocalizedStrings() [[NSNotificationCenter defaultCenter] postNotificationName:@"KML file added" object:nil]; [self showLoadFileAlertIsSuccessful:YES]; - [[Statistics instance] logEvent:@"KML Import"]; + [[Statistics instance] logEvent:kStatEventName(kStatApplication, kStatImport) + withParameters:@{kStatValue : kStatKML}]; } else { @@ -313,7 +311,7 @@ void InitLocalizedStrings() [self restoreRouteState]; - [Statistics.instance applicationDidBecomeActive]; + [[Statistics instance] applicationDidBecomeActive]; } - (void)dealloc @@ -327,7 +325,6 @@ void InitLocalizedStrings() { Statistics * statistics = [Statistics instance]; BOOL returnValue = [statistics application:application didFinishLaunchingWithOptions:launchOptions]; - [statistics logEvent:@"Device Info" withParameters:@{@"Country" : [AppInfo sharedInfo].countryCode}]; NSString * connectionType; switch (Platform::ConnectionStatus()) @@ -343,7 +340,9 @@ void InitLocalizedStrings() } if (!connectionType) connectionType = @"Offline"; - [statistics logEvent:@"Connection" withParameters:@{@"Type" : connectionType}]; + [statistics logEvent:kStatDeviceInfo + withParameters: + @{kStatCountry : [AppInfo sharedInfo].countryCode, kStatConnection : connectionType}]; return returnValue; } diff --git a/iphone/Maps/Classes/Share/MWMShareLocationActivityItem.mm b/iphone/Maps/Classes/Share/MWMShareLocationActivityItem.mm index 1e45f0042a..e136e6169c 100644 --- a/iphone/Maps/Classes/Share/MWMShareLocationActivityItem.mm +++ b/iphone/Maps/Classes/Share/MWMShareLocationActivityItem.mm @@ -56,18 +56,12 @@ NSString * httpGe0Url(NSString * shortUrl) itemForActivityType:(NSString *)activityType { NSString * event = @"MWMShareLocationActivityItem:activityViewController:itemForActivityType:"; + [[Statistics instance] logEvent:kStatEventName(kStatShare, kStatLocation) withParameters:@{kStatAction : activityType}]; [Alohalytics logEvent:event withValue:activityType]; if ([UIActivityTypeMessage isEqualToString:activityType]) - { - [[Statistics instance] logEvent:@"ge0(zero) MESSAGE Export"]; return [self itemForMessageApp]; - } if ([UIActivityTypeMail isEqualToString:activityType]) - { - [[Statistics instance] logEvent:@"ge0(zero) MAIL Export"]; return [self itemForMailApp]; - } - [Statistics.instance logEvent:event withParameters:@{@"type" : activityType}]; return [self itemDefault]; } diff --git a/iphone/Maps/Classes/Share/MWMSharePedestrianRoutesToastActivityItem.mm b/iphone/Maps/Classes/Share/MWMSharePedestrianRoutesToastActivityItem.mm index 9a6a09ad6e..dc2dc72d7d 100644 --- a/iphone/Maps/Classes/Share/MWMSharePedestrianRoutesToastActivityItem.mm +++ b/iphone/Maps/Classes/Share/MWMSharePedestrianRoutesToastActivityItem.mm @@ -19,8 +19,8 @@ itemForActivityType:(NSString *)activityType { NSString * event = @"MWMSharePedestrianRoutesToastActivityItem:activityViewController:itemForActivityType:"; + [[Statistics instance] logEvent:kStatEventName(kStatShare, kStatSocial) withParameters:@{kStatAction : activityType}]; [Alohalytics logEvent:event withValue:activityType]; - [Statistics.instance logEvent:event withParameters:@{@"type" : activityType}]; if ([activityType isEqualToString:UIActivityTypePostToFacebook] || [activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] || [activityType.lowercaseString rangeOfString:@"facebook"].length) diff --git a/iphone/Maps/CommunityVC.mm b/iphone/Maps/CommunityVC.mm index 95a92dd8b6..62f144bb88 100644 --- a/iphone/Maps/CommunityVC.mm +++ b/iphone/Maps/CommunityVC.mm @@ -66,9 +66,8 @@ extern NSString * const kAlohalyticsTapEventKey; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString * itemId = self.items[indexPath.section][@"Items"][indexPath.row][@"Id"]; - [[Statistics instance] - logEvent:kStatSocial - withParameters:@{kStatAction : kStatToggleCompassCalibration, kStatValue : itemId}]; + [[Statistics instance] logEvent:kStatEventName(kStatSocial, kStatToggleCompassCalibration) + withParameters:@{kStatValue : itemId}]; if ([itemId isEqualToString:@"Facebook"]) { [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"likeOnFb"]; diff --git a/iphone/Maps/MWMTTSSettingsViewController.mm b/iphone/Maps/MWMTTSSettingsViewController.mm index 1b729f1244..248a281145 100644 --- a/iphone/Maps/MWMTTSSettingsViewController.mm +++ b/iphone/Maps/MWMTTSSettingsViewController.mm @@ -1,8 +1,9 @@ -#import #import "LinkCell.h" #import "MWMTextToSpeech.h" #import "MWMTTSSettingsViewController.h" #import "SelectableCell.h" +#import "Statistics.h" +#import static NSString * kSelectTTSLanguageSegueName = @"TTSLanguage"; @@ -118,6 +119,8 @@ using namespace std; { if (indexPath.row == _languages.size()) { + [[Statistics instance] logEvent:kStatEventName(kStatTTSSettings, kStatChangeLanguage) + withParameters:@{kStatValue : kStatOther}]; [self performSegueWithIdentifier:kSelectTTSLanguageSegueName sender:nil]; } else diff --git a/iphone/Maps/Settings/SettingsViewController.mm b/iphone/Maps/Settings/SettingsViewController.mm index 9534c87b5c..40ebcb9a0e 100644 --- a/iphone/Maps/Settings/SettingsViewController.mm +++ b/iphone/Maps/Settings/SettingsViewController.mm @@ -156,17 +156,16 @@ typedef NS_ENUM(NSUInteger, Section) - (void)switchCell:(SwitchCell *)cell didChangeValue:(BOOL)value { NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; + Statistics * stat = [Statistics instance]; if (indexPath.section == SectionAd) { - [[Statistics instance] - logEvent:kStatSettings + [stat logEvent:kStatSettings withParameters:@{kStatAction : kStatMoreApps, kStatValue : (value ? kStatOn : kStatOff)}]; Settings::Set(kAdForbiddenSettingsKey, (bool)!value); } else if (indexPath.section == SectionStatistics) { - Statistics * stat = [Statistics instance]; - [stat logEvent:kStatSettings + [stat logEvent:kStatEventName(kStatSettings, kStatToggleStatistics) withParameters: @{kStatAction : kStatToggleStatistics, kStatValue : (value ? kStatOn : kStatOff)}]; if (value) @@ -176,25 +175,21 @@ typedef NS_ENUM(NSUInteger, Section) } else if (indexPath.section == SectionZoomButtons) { - [[Statistics instance] logEvent:kStatSettings - withParameters:@{ - kStatAction : kStatToggleZoomButtonsVisibility, - kStatValue : (value ? kStatVisible : kStatHidden) - }]; + [stat logEvent:kStatEventName(kStatSettings, kStatToggleZoomButtonsVisibility) + withParameters:@{kStatValue : (value ? kStatVisible : kStatHidden)}]; Settings::Set("ZoomButtonsEnabled", (bool)value); [MapsAppDelegate theApp].mapViewController.controlsManager.zoomHidden = !value; } else if (indexPath.section == SectionCalibration) { - [[Statistics instance] logEvent:kStatSettings - withParameters:@{ - kStatAction : kStatToggleCompassCalibration, - kStatValue : (value ? kStatOn : kStatOff) - }]; + [stat logEvent:kStatEventName(kStatSettings, kStatToggleCompassCalibration) + withParameters:@{kStatValue : (value ? kStatOn : kStatOff)}]; Settings::Set("CompassCalibrationEnabled", (bool)value); } else if (indexPath.section == SectionRouting) { + [[Statistics instance] logEvent:kStatEventName(kStatSettings, kStatTTS) + withParameters:@{kStatValue : value ? kStatOn : kStatOff}]; [[MWMTextToSpeech tts] setNeedToEnable:value]; [[NSNotificationCenter defaultCenter] postNotificationName:kTTSStatusWasChangedNotification object:nil @@ -212,16 +207,17 @@ Settings::Units unitsForIndex(NSInteger index) if (indexPath.section == SectionMetrics) { Settings::Units units = unitsForIndex(indexPath.row); - [[Statistics instance] - logEvent:kStatSettings - withParameters:@{ - kStatAction : kStatChangeMeasureUnits, - kStatValue : (units == Settings::Units::Metric ? kStatKilometers : kStatMiles) - }]; + [[Statistics instance] logEvent:kStatEventName(kStatSettings, kStatChangeMeasureUnits) + withParameters:@{kStatValue : (units == Settings::Units::Metric ? kStatKilometers : kStatMiles)}]; Settings::Set("Units", units); [tableView reloadSections:[NSIndexSet indexSetWithIndex:SectionMetrics] withRowAnimation:UITableViewRowAnimationFade]; [[MapsAppDelegate theApp].mapViewController setupMeasurementSystem]; } + else if (indexPath.section == SectionRouting && indexPath.row == 1) + { + [[Statistics instance] logEvent:kStatEventName(kStatSettings, kStatTTS) + withParameters:@{kStatAction : kStatChangeLanguage}]; + } } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section diff --git a/iphone/Maps/Statistics/Statistics.mm b/iphone/Maps/Statistics/Statistics.mm index 74166fa31d..8c48c95d80 100644 --- a/iphone/Maps/Statistics/Statistics.mm +++ b/iphone/Maps/Statistics/Statistics.mm @@ -96,27 +96,26 @@ char const * kStatisticsEnabledSettingsKey = "StatisticsEnabled"; - (void)logLocation:(CLLocation *)location { - if (_enabled) + if (!_enabled) + return; + if (!_lastLocationLogTimestamp || [[NSDate date] timeIntervalSinceDate:_lastLocationLogTimestamp] > (60 * 60 * 3)) { - if (!_lastLocationLogTimestamp || [[NSDate date] timeIntervalSinceDate:_lastLocationLogTimestamp] > (60 * 60 * 3)) - { - _lastLocationLogTimestamp = [NSDate date]; - CLLocationCoordinate2D const coord = location.coordinate; - [Flurry setLatitude:coord.latitude longitude:coord.longitude horizontalAccuracy:location.horizontalAccuracy verticalAccuracy:location.verticalAccuracy]; - } + _lastLocationLogTimestamp = [NSDate date]; + CLLocationCoordinate2D const coord = location.coordinate; + [Flurry setLatitude:coord.latitude longitude:coord.longitude horizontalAccuracy:location.horizontalAccuracy verticalAccuracy:location.verticalAccuracy]; } } - (void)logEvent:(NSString *)eventName withParameters:(NSDictionary *)parameters { - if (_enabled) - { - NSMutableDictionary * params = [parameters mutableCopy]; - params[kStatDeviceType] = IPAD ? kStatiPad : kStatiPhone; - BOOL isLandscape = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); - params[kStatOrientation] = isLandscape ? kStatLandscape : kStatPortrait; - [Flurry logEvent:eventName withParameters:parameters]; - } + if (!_enabled) + return; + NSMutableDictionary * params = [parameters mutableCopy]; + params[kStatDeviceType] = IPAD ? kStatiPad : kStatiPhone; + BOOL isLandscape = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); + params[kStatOrientation] = isLandscape ? kStatLandscape : kStatPortrait; + [Flurry logEvent:eventName withParameters:parameters]; + [Alohalytics logEvent:eventName withDictionary:parameters]; } - (void)logEvent:(NSString *)eventName @@ -126,30 +125,29 @@ char const * kStatisticsEnabledSettingsKey = "StatisticsEnabled"; - (void)logApiUsage:(NSString *)programName { - if (_enabled) - { - if (programName) - [self logEvent:@"Api Usage" withParameters: @{@"Application Name" : programName}]; - else - [self logEvent:@"Api Usage" withParameters: @{@"Application Name" : @"Error passing nil as SourceApp name."}]; - } + if (!_enabled) + return; + if (programName) + [self logEvent:@"Api Usage" withParameters: @{@"Application Name" : programName}]; + else + [self logEvent:@"Api Usage" withParameters: @{@"Application Name" : @"Error passing nil as SourceApp name."}]; } - (void)applicationDidBecomeActive { - if (_enabled) - { - [FBSDKAppEvents activateApp]; - // Special FB events to improve marketing campaigns quality. - [MWMCustomFacebookEvents optimizeExpenses]; - } + if (!_enabled) + return; + [FBSDKAppEvents activateApp]; + // Special FB events to improve marketing campaigns quality. + [MWMCustomFacebookEvents optimizeExpenses]; } + (instancetype)instance { static Statistics * instance; static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ + dispatch_once(&onceToken, ^ + { instance = [[Statistics alloc] init]; }); return instance; diff --git a/iphone/Maps/Statistics/StatisticsStrings.h b/iphone/Maps/Statistics/StatisticsStrings.h index d6e99d581c..6395e78552 100644 --- a/iphone/Maps/Statistics/StatisticsStrings.h +++ b/iphone/Maps/Statistics/StatisticsStrings.h @@ -1,4 +1,4 @@ - +static NSString * const kStatAPI = @"API"; static NSString * const kStatAbout = @"About"; static NSString * const kStatAction = @"Action"; static NSString * const kStatActionSheet = @"Action sheet"; @@ -6,28 +6,39 @@ static NSString * const kStatAd = @"Ad"; static NSString * const kStatAdTitle = @"Ad title"; static NSString * const kStatAdd = @"Add"; static NSString * const kStatAlert = @"Alert"; +static NSString * const kStatApplication = @"Application"; static NSString * const kStatApply = @"Apply"; +static NSString * const kStatBack = @"Back"; static NSString * const kStatBannerDescription = @"Banner description"; static NSString * const kStatBannerTitle = @"Banner title"; static NSString * const kStatBookmarks = @"Bookmarks"; static NSString * const kStatBuildRoute = @"Build route"; static NSString * const kStatButton = @"Button"; static NSString * const kStatCallPhoneNumber = @"Call phone number"; +static NSString * const kStatCancel = @"Cancel"; static NSString * const kStatCategories = @"Categories"; static NSString * const kStatChangeBookmarkColor = @"Change bookmark color"; static NSString * const kStatChangeBookmarkDescription = @"Change bookmark description"; static NSString * const kStatChangeBookmarkGroup = @"Change bookmark group"; +static NSString * const kStatChangeLanguage = @"Change language"; static NSString * const kStatChangeMeasureUnits = @"Change measure units"; static NSString * const kStatChangeRoutingMode = @"Change routing mode"; static NSString * const kStatClear = @"Clear"; static NSString * const kStatClose = @"Close"; static NSString * const kStatCollapse = @"Collapse"; static NSString * const kStatCompass = @"Compass"; +static NSString * const kStatConnection = @"Connection"; static NSString * const kStatCopyright = @"Copyright"; +static NSString * const kStatCountry = @"Country"; static NSString * const kStatDestination = @"Destination"; +static NSString * const kStatDeviceInfo = @"Device info"; static NSString * const kStatDeviceType = @"Device type"; static NSString * const kStatDownloadAll = @"Download all"; +static NSString * const kStatDownloadMap = @"Download map"; static NSString * const kStatDownloadMaps = @"Download maps"; +static NSString * const kStatDownloadRequest = @"Download request"; +static NSString * const kStatDownloadRoute = @"Download route"; +static NSString * const kStatDownloaderDialog = @"Downloader dialog"; static NSString * const kStatExpand = @"Expand"; static NSString * const kStatExpandCategory = @"Expand category"; static NSString * const kStatExpandLargeCountry = @"Expand large country"; @@ -37,6 +48,9 @@ static NSString * const kStatGo = @"Go"; static NSString * const kStatHelp = @"Help"; static NSString * const kStatHidden = @"Hidden"; static NSString * const kStatHistory = @"History"; +static NSString * const kStatImport = @"Import"; +static NSString * const kStatIn = @"In"; +static NSString * const kStatKML = @"KML"; static NSString * const kStatKilometers = @"Kilometers"; static NSString * const kStatLandscape = @"Landscape"; static NSString * const kStatLocation = @"Location"; @@ -46,6 +60,7 @@ static NSString * const kStatMiles = @"Miles"; static NSString * const kStatMoreApps = @"More apps"; static NSString * const kStatMyPosition = @"My position"; static NSString * const kStatName = @"Name"; +static NSString * const kStatNavigationDashboard = @"Navigation dashboard"; static NSString * const kStatNo = @"No"; static NSString * const kStatOff = @"Off"; static NSString * const kStatOn = @"On"; @@ -53,10 +68,14 @@ static NSString * const kStatOpen = @"Open"; static NSString * const kStatOpenActionSheet = @"Open action sheet"; static NSString * const kStatOpenSite = @"Open site"; static NSString * const kStatOrientation = @"Orientation"; +static NSString * const kStatOther = @"Other"; +static NSString * const kStatOut = @"Out"; static NSString * const kStatPedestrian = @"Pedestrian"; static NSString * const kStatPlacePage = @"Place page"; static NSString * const kStatPointToPoint = @"Point to point"; static NSString * const kStatPortrait = @"Portrait"; +static NSString * const kStatProgress = @"Progress"; +static NSString * const kStatPushReceived = @"Push received"; static NSString * const kStatRate = @"Rate"; static NSString * const kStatRegular = @"Regular"; static NSString * const kStatRemove = @"Remove"; @@ -64,6 +83,7 @@ static NSString * const kStatRename = @"Rename"; static NSString * const kStatReport = @"Report"; static NSString * const kStatSearch = @"Search"; static NSString * const kStatSearchEnteredState = @"Search entered state"; +static NSString * const kStatSelectMap = @"Select map"; static NSString * const kStatSelectResult = @"Select result"; static NSString * const kStatSelectTab = @"Select tab"; static NSString * const kStatSendEmail = @"Send email"; @@ -75,6 +95,8 @@ static NSString * const kStatSocial = @"Social"; static NSString * const kStatSource = @"Source"; static NSString * const kStatStart = @"Start"; static NSString * const kStatSwapRoutingPoints = @"Swap routing points"; +static NSString * const kStatTTS = @"TTS"; +static NSString * const kStatTTSSettings = @"TTS settings"; static NSString * const kStatTable = @"Table"; static NSString * const kStatToMyPosition = @"To my position"; static NSString * const kStatToggleBookmark = @"Toggle bookmark"; @@ -90,5 +112,11 @@ static NSString * const kStatValue = @"Value"; static NSString * const kStatVehicle = @"Vehicle"; static NSString * const kStatVisible = @"Visible"; static NSString * const kStatYes = @"Yes"; +static NSString * const kStatZoom = @"Zoom"; static NSString * const kStatiPad = @"iPad"; static NSString * const kStatiPhone = @"iPhone"; + +static inline NSString * const kStatEventName(NSString * component, NSString * action) +{ + return [NSString stringWithFormat:@"%@ %@", component, action]; +}