[iOS] add statistics for place page description

This commit is contained in:
Aleksey Belouosv 2018-12-13 19:46:55 +03:00 committed by Vladimir Byko-Ianko
parent bb4e4c6fa0
commit 9cbe8764a5
5 changed files with 48 additions and 1 deletions

View file

@ -424,8 +424,9 @@ BOOL gIsFirstMyPositionMode = YES;
- (void)openFullPlaceDescriptionWithHtml:(NSString *)htmlString
{
[Statistics logEvent:kStatPlacePageDescriptionMore];
WebViewController * descriptionViewController =
[[WebViewController alloc] initWithHtml:htmlString baseUrl:nil title:L(@"place_description_title")];
[[PlacePageDescriptionViewController alloc] initWithHtml:htmlString baseUrl:nil title:L(@"place_description_title")];
descriptionViewController.openInSafari = YES;
[self.navigationController pushViewController:descriptionViewController animated:YES];
}

View file

@ -252,6 +252,9 @@ static NSString * const kStatOut = @"Out";
static NSString * const kStatPedestrian = @"Pedestrian";
static NSString * const kStatPhone = @"Phone";
static NSString * const kStatPlacePage = @"placepage";
static NSString * const kStatPlacePageDescriptionLinkClick = @"Placepage_Description_Outbound_click";
static NSString * const kStatPlacePageDescriptionMore = @"Placepage_Description_more";
static NSString * const kStatPlacePageDescriptionViewAll = @"Placepage_Description_View_all";
static NSString * const kStatPlacePageBannerBlank = @"Placepage_Banner_blank";
static NSString * const kStatPlacePageBannerClick = @"Placepage_Banner_click";
static NSString * const kStatPlacePageBannerError = @"Placepage_Banner_error";
@ -415,6 +418,7 @@ static NSString * const kStatUnknown = @"unknown";
static NSString * const kStatUnknownError = @"unknown_error";
static NSString * const kStatUpdate = @"update";
static NSString * const kStatUpdateAll = @"update_all";
static NSString * const kStatUrl = @"url";
static NSString * const kStatUserInterrupted = @"user_interrupted";
static NSString * const kStatValue = @"Value";
static NSString * const kStatVehicle = @"Vehicle";

View file

@ -10,6 +10,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (copy, nonatomic) NSString * _Nullable m_htmlText;
// Set to YES if external browser should be launched
@property (nonatomic) BOOL openInSafari;
@property (nonatomic, readonly) WKWebView * webView;
- (instancetype _Nullable)initWithUrl:(NSURL *)url title:( NSString * _Nullable)title;
- (instancetype _Nullable)initWithHtml:(NSString *)htmlText

View file

@ -379,6 +379,7 @@
4719A647219CBD7F009F9AA7 /* IBillingPendingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4719A646219CBD7F009F9AA7 /* IBillingPendingTransaction.swift */; };
4719A64E21A30C3B009F9AA7 /* PaidRouteStatistics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4719A64D21A30C3B009F9AA7 /* PaidRouteStatistics.swift */; };
471BBD942130390F00EB17C9 /* TutorialViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471BBD932130390F00EB17C9 /* TutorialViewController.swift */; };
4726254921C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4726254821C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift */; };
472E3F472146BCD30020E412 /* SubscriptionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F462146BCD30020E412 /* SubscriptionManager.swift */; };
472E3F4A2146C4CD0020E412 /* MWMPurchaseManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */; };
472E3F4C2147D5700020E412 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F4B2147D5700020E412 /* Subscription.swift */; };
@ -1411,6 +1412,7 @@
4719A646219CBD7F009F9AA7 /* IBillingPendingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IBillingPendingTransaction.swift; sourceTree = "<group>"; };
4719A64D21A30C3B009F9AA7 /* PaidRouteStatistics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaidRouteStatistics.swift; sourceTree = "<group>"; };
471BBD932130390F00EB17C9 /* TutorialViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TutorialViewController.swift; sourceTree = "<group>"; };
4726254821C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlacePageDescriptionViewController.swift; sourceTree = "<group>"; };
472E3F462146BCD30020E412 /* SubscriptionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionManager.swift; sourceTree = "<group>"; };
472E3F482146C4CD0020E412 /* MWMPurchaseManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPurchaseManager.h; sourceTree = "<group>"; };
472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPurchaseManager.mm; sourceTree = "<group>"; };
@ -4019,6 +4021,7 @@
F6E2FC9B1E097B9F0083EBEC /* MWMPlacePageProtocol.h */,
4716EACA21B01C270029B886 /* MWMUGCReviewSource.h */,
F6E2FC9C1E097B9F0083EBEC /* PlacePageLayout */,
4726254821C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift */,
);
path = PlacePage;
sourceTree = "<group>";
@ -5264,6 +5267,7 @@
34926BE71EA4C2A700DCF14C /* SearchBanners.swift in Sources */,
34D3B02A1E389D05004100F9 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */,
33C558E3217F6CF100299E70 /* UploadActionCell.swift in Sources */,
4726254921C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift in Sources */,
347E039A1FAC5F1D00426032 /* UIWindow+InputLanguage.swift in Sources */,
340475711E081A4600C92850 /* MWMSettings.mm in Sources */,
33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */,

View file

@ -0,0 +1,37 @@
final class PlacePageDescriptionViewController: WebViewController {
override func viewDidLoad() {
super.viewDidLoad()
webView.scrollView.delegate = self
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if isOnBottom(webView.scrollView) {
Statistics.logEvent(kStatPlacePageDescriptionViewAll)
}
}
override func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated, let url = navigationAction.request.url {
Statistics.logEvent(kStatPlacePageDescriptionLinkClick,
withParameters: [kStatUrl : url.absoluteString])
}
super.webView(webView, decidePolicyFor: navigationAction, decisionHandler: decisionHandler)
}
private func isOnBottom(_ scrollView: UIScrollView) -> Bool {
let bottom = scrollView.contentSize.height + scrollView.contentInset.bottom - scrollView.bounds.height
return scrollView.contentOffset.y >= bottom
}
}
extension PlacePageDescriptionViewController: UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if isOnBottom(scrollView) {
Statistics.logEvent(kStatPlacePageDescriptionViewAll)
}
}
}