summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs')
-rw-r--r--StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs103
1 files changed, 103 insertions, 0 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs b/StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs
new file mode 100644
index 00000000..4e1257f9
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-google-analytics/wp8/PlatformInfoProvider.WP.cs
@@ -0,0 +1,103 @@
+// PlatformInfoProvider.WP.cs
+
+using GoogleAnalytics.Core;
+using System;
+using System.IO.IsolatedStorage;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace UniversalAnalyticsPlugin
+{
+ public sealed class PlatformInfoProvider : IPlatformInfoProvider
+ {
+ const string Key_AnonymousClientId = "GoogleAnaltyics.AnonymousClientId";
+ string anonymousClientId;
+ Dimensions _screenResolution = new Dimensions(0,0);
+
+#pragma warning disable 0067
+ public event EventHandler ViewPortResolutionChanged;
+
+ public event EventHandler ScreenResolutionChanged;
+#pragma warning restore 0067
+
+ public PlatformInfoProvider()
+ {
+ Deployment.Current.Dispatcher.BeginInvoke(() => {
+ double scale = (double)Application.Current.Host.Content.ScaleFactor / 100;
+ int h = (int)Math.Ceiling(Application.Current.Host.Content.ActualHeight * scale);
+ int w = (int)Math.Ceiling(Application.Current.Host.Content.ActualWidth * scale);
+ _screenResolution = new Dimensions(h, w);
+ });
+ }
+
+ public string AnonymousClientId
+ {
+ get
+ {
+ if (anonymousClientId == null)
+ {
+ var appSettings = IsolatedStorageSettings.ApplicationSettings;
+ if (!appSettings.Contains(Key_AnonymousClientId))
+ {
+ anonymousClientId = Guid.NewGuid().ToString();
+ appSettings.Add(Key_AnonymousClientId, anonymousClientId);
+ appSettings.Save();
+ }
+ else
+ {
+ anonymousClientId = (string)appSettings[Key_AnonymousClientId];
+ }
+ }
+ return anonymousClientId;
+ }
+ set { anonymousClientId = value; }
+ }
+
+ public Dimensions ScreenResolution
+ {
+ get
+ {
+ return _screenResolution;
+ }
+ }
+
+ public Dimensions ViewPortResolution
+ {
+ get { return ScreenResolution; }
+ }
+
+ public string UserLanguage
+ {
+ get { return System.Globalization.CultureInfo.CurrentUICulture.Name; }
+ }
+
+ public int? ScreenColorDepthBits
+ {
+ get { return null; }
+ }
+
+ public void OnTracking()
+ { }
+
+ public string GetUserAgent()
+ {
+ var sysInfo = UniversalAnalyticsPlugin.PhoneNameResolver.Resolve(Microsoft.Phone.Info.DeviceStatus.DeviceManufacturer, Microsoft.Phone.Info.DeviceStatus.DeviceName);
+ Version osVer = Environment.OSVersion.Version;
+ string uaMask;
+
+ if (osVer.Minor == 10)
+ {
+ // Windows Phone 8.1
+ uaMask = "Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv11.0; IEMobile/11.0; {1}; {2}) like Gecko";
+ }
+ else
+ {
+ // Windows Phone 8.0
+ uaMask = "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone OS {0}; Trident/6.0; IEMobile/10.0; ARM; Touch; {1}; {2})";
+ }
+
+ //var userAgentMask = "Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]";
+ return string.Format(uaMask, Environment.OSVersion.Version, sysInfo.CanonicalManufacturer, sysInfo.CanonicalModel);
+ }
+ }
+}