forked from organicmaps/organicmaps
[iOS] add statistics for place page description
This commit is contained in:
parent
bb4e4c6fa0
commit
9cbe8764a5
5 changed files with 48 additions and 1 deletions
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue