private void InitialiseGoogleAnalytics(AdRotator.AdProviderConfig.SupportedPlatforms platform)
        {
            if (!string.IsNullOrEmpty(GoogleAnalyticsId))
            {
                if (GoogleAnalyticsControl == null)
                {
                    switch (platform)
                    {
                    case AdRotator.AdProviderConfig.SupportedPlatforms.WindowsPhone7:
                        GoogleAnalyticsControlType = reflectionHelper.TryGetType("GoogleAnalyticsTracker.WP7", "GoogleAnalyticsTracker.Tracker");
                        break;

                    case AdRotator.AdProviderConfig.SupportedPlatforms.WindowsPhone8:
                        GoogleAnalyticsControlType = reflectionHelper.TryGetType("GoogleAnalyticsTracker.WP8", "GoogleAnalyticsTracker.WP8.Tracker");
                        break;

                    case AdRotator.AdProviderConfig.SupportedPlatforms.Windows8:
                        GoogleAnalyticsControlType = reflectionHelper.TryGetType("GoogleAnalyticsTracker.WinRT", "GoogleAnalyticsTracker.Tracker");
                        break;
                    }
                    if (GoogleAnalyticsControlType != null)
                    {
                        GoogleAnalyticsControl = Activator.CreateInstance(GoogleAnalyticsControlType, new object[2] {
                            GoogleAnalyticsId, "AdRotator"
                        });
                    }
                }
                TrackAnalytics += TrackGoogleAnalytics;
            }
        }
 internal void InitialiseAnalytics(AdRotator.AdProviderConfig.SupportedPlatforms platform)
 {
     if (!string.IsNullOrEmpty(GoogleAnalyticsId))
     {
         InitialiseGoogleAnalytics(platform);
     }
     if (!string.IsNullOrEmpty(FlurryAnalyticsId) && FlurryAnalyticsControl != null)
     {
         InitialiseFlurryAnalytics(platform);
     }
     AnalyticsInitilised = true;
 }
        private void InitialiseFlurryAnalytics(AdRotator.AdProviderConfig.SupportedPlatforms platform)
        {
            if (!string.IsNullOrEmpty(FlurryAnalyticsId))
            {
                if (FlurryAnalyticsControl != null)
                {
                    FlurryAnalyticsControlType = reflectionHelper.TryGetType("FlurryWP8SDK", "FlurryWP8SDK.Api");
                    reflectionHelper.TryInvokeMethod(FlurryAnalyticsControlType, null, "StartSession", new object[] { FlurryAnalyticsId });

                    TrackAnalytics += TrackFlurryAnalytics;
                }
            }
        }
        internal object GetProviderFrameworkElement(AdRotator.AdProviderConfig.SupportedPlatforms platform, AdProvider adProvider)
        {
            var    provider     = adProvider.AdProviderConfigValues[platform];
            Type   providerType = null;
            object instance;

            try
            {
                if (PlatformAdProviderComponents.ContainsKey(adProvider.AdProviderType))
                {
                    providerType = PlatformAdProviderComponents[adProvider.AdProviderType];
                }
                else
                {
                    providerType = reflectionHelper.TryGetType(provider.AssemblyName, provider.ElementName);
                }
            }
            catch (PlatformNotSupportedException)
            {
                AdFailed(adProvider.AdProviderType);
            }
            if (providerType == null)
            {
                return(null);
            }
            try
            {
                instance = Activator.CreateInstance(providerType);

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AppId))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AppId], adProvider.AppId.ToString());
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.SecondaryId))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.SecondaryId], adProvider.SecondaryId.ToString());
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdType))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdType], "IaAdType_Banner");
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.IsTest))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.IsTest], adProvider.IsTest.ToString());
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdWidth))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdWidth], AdWidth.ToString());
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdHeight))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdHeight], AdHeight.ToString());
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.Size))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.Size], AdWidth.ToString() + "x" + AdHeight.ToString());
                }

#if DEBUG
                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.ShowErrors))
                {
                    reflectionHelper.TrySetProperty(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.ShowErrors], "true");
                }
#endif
                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdSuccessEvent))
                {
                    WireUpDelegateEvent(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdSuccessEvent], string.Format("Ads served for: {0}", _settings.CurrentAdType.ToString()));
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdFailedEvent))
                {
                    WireUpDelegateEvent(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdFailedEvent], string.Format("Ad failed request for: {0}", _settings.CurrentAdType.ToString()));
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.AdClickedEvent))
                {
                    WireUpDelegateEvent(instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.AdClickedEvent], string.Format("Ad clicked for: {0}", _settings.CurrentAdType.ToString()));
                }

                if (provider.ConfigurationOptions.ContainsKey(AdProviderConfig.AdProviderConfigOptions.StartMethod))
                {
                    reflectionHelper.TryInvokeMethod(providerType, instance, provider.ConfigurationOptions[AdProviderConfig.AdProviderConfigOptions.StartMethod]);
                }
            }
            catch (PlatformNotSupportedException)
            {
                OnLog(string.Format("Configured provider {0} not found in this installation", adProvider.AdProviderType.ToString()));
                AdFailed(adProvider.AdProviderType);
                return(null);
            }
            catch (NotImplementedException)
            {
                OnLog(string.Format("Configured provider {0} is not fully implemented yet", adProvider.AdProviderType.ToString()));
                AdFailed(adProvider.AdProviderType);
                return(null);
            }
            catch (Exception e)
            {
                OnLog(string.Format("General exception [{0}] occured, continuing", e.InnerException.ToString()));
                AdFailed(adProvider.AdProviderType);
                return(null);
            }

            OnLog(string.Format("Ad created for provider {0}", adProvider.AdProviderType.ToString()));

            return(instance);
        }