public GoogleAnalyticsService(Context c, IPackageInfo packageInfo, IAppSettings settings, ILogger logger) { Trackers = new List <Tracker>(); try { var instance = GoogleAnalytics.GetInstance(c); instance.SetLocalDispatchPeriod(20); // Prevent testing/debugging data from being sent to GA #if DEBUG instance.SetDryRun(true); #endif // MK's tracking id Trackers.Add(instance.NewTracker("UA-44714416-1")); if (settings.Data.GoogleAnalyticsTrackingId.HasValue()) { // Company's own tracking id Trackers.Add(instance.NewTracker(settings.Data.GoogleAnalyticsTrackingId)); } var appName = settings.Data.TaxiHail.ApplicationName.Replace(' ', '_'); var version = packageInfo.Version; Trackers.ForEach(x => { x.SetAppName(appName); x.SetAppVersion(version); }); } catch (Exception ex) { logger.LogError(ex); } }
public GoogleAnalyticsService(Context c, IPackageInfo packageInfo, IAppSettings settings, ILogger logger) { Trackers = new List <Tracker>(); try { GAServiceManager.Instance.SetDispatchPeriod(20); var instance = GoogleAnalytics.GetInstance(c); // Prevent testing/debugging data from being sent to GA #if DEBUG instance.SetDebug(true); #endif // MK's tracking id Trackers.Add(instance.GetTracker("UA-44714416-1")); if (settings.Data.GoogleAnalyticsTrackingId.HasValue()) { // Company's own tracking id var tracker = instance.GetTracker(settings.Data.GoogleAnalyticsTrackingId); // TODO MKTAXI-3716 Verify if this solution is viable, since it's by company and it should not be called everytime the app starts // A campaign can be set manually: //var uriPath = "http://www.taxihail.com/?utm_source=email&utm_medium=cool_installations&utm_campaign=installations&utm_content=blih"; //tracker.SetCampaign(uriPath); Trackers.Add(tracker); } var appName = settings.Data.TaxiHail.ApplicationName.Replace(' ', '_'); var version = packageInfo.Version; Trackers.ForEach(x => { x.SetAppName(appName); x.SetAppVersion(version); }); } catch (Exception ex) { logger.LogError(ex); } }
private void EnsureApnsStarted() { if (_appleStarted) { return; } try { _appleStarted = true; ApnsConfiguration configuration; #if DEBUG // looks like for now we should specify production even in debug, using sandbox messages are not coming through. const ApnsConfiguration.ApnsServerEnvironment environment = ApnsConfiguration.ApnsServerEnvironment.Production; var certificatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _serverSettings.ServerData.APNS.DevelopmentCertificatePath); #else const ApnsConfiguration.ApnsServerEnvironment environment = ApnsConfiguration.ApnsServerEnvironment.Production; var certificatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _serverSettings.ServerData.APNS.ProductionCertificatePath); #endif // Apple settings placed next for development purpose. (Crashing the method when certificate is missing.) var appleCert = File.ReadAllBytes(certificatePath); configuration = new ApnsConfiguration(environment, appleCert, _serverSettings.ServerData.APNS.CertificatePassword); _apps.Add(iOSApp, new AppPushBrokers { Apns = new ApnsServiceBroker(configuration) }); _apps[iOSApp].Apns.OnNotificationSucceeded += OnApnsNotificationSucceeded; _apps[iOSApp].Apns.OnNotificationFailed += (notification, aggregateEx) => { aggregateEx.Handle(ex => { // See what kind of exception it was to further diagnose if (ex is ApnsNotificationException) { var x = ex as ApnsNotificationException; // Deal with the failed notification ApnsNotification n = x.Notification; string description = "Message: " + x.Message + " Data:" + x.Data.ToString(); _logger.LogMessage(string.Format("Notification Failed: ID={0}, Desc={1}", n.Identifier, description)); } else if (ex is ApnsConnectionException) { var x = ex as ApnsConnectionException; string description = "Message: " + x.Message + " Data:" + x.Data.ToString(); _logger.LogMessage(string.Format("Notification Failed: Connection exception, Desc={0}", description)); } else if (ex is DeviceSubscriptionExpiredException) { LogDeviceSubscriptionExpiredException((DeviceSubscriptionExpiredException)ex); } else if (ex is RetryAfterException) { LogRetryAfterException((RetryAfterException)ex); } else { _logger.LogMessage("Notification Failed for some (Unknown Reason)"); } // Mark it as handled return(true); }); }; _apps[iOSApp].Apns.Start(); } catch (Exception e) { _logger.LogError(e); } }