Beispiel #1
0
    public static AndroidJavaObject ToAndroidAppMetricaConfig(this YandexAppMetricaConfig self)
    {
        AndroidJavaObject appMetricaConfig;

        using (AndroidJavaClass configClass = new AndroidJavaClass("com.yandex.metrica.YandexMetricaConfig"))
        {
            AndroidJavaObject builder = configClass.CallStatic <AndroidJavaObject>("newConfigBuilder", self.ApiKey);

            if (self.Location.HasValue)
            {
                YandexAppMetricaConfig.Coordinates location = self.Location.Value;
                builder.Call <AndroidJavaObject>("withLocation", location.ToAndroidLocation());
            }

            if (self.AppVersion != null)
            {
                builder.Call <AndroidJavaObject>("withAppVersion", self.AppVersion);
            }

            if (self.LocationTracking.HasValue)
            {
                builder.Call <AndroidJavaObject>("withLocationTracking", self.LocationTracking.Value);
            }

            if (self.SessionTimeout.HasValue)
            {
                builder.Call <AndroidJavaObject>("withSessionTimeout", self.SessionTimeout.Value);
            }

            if (self.CrashReporting.HasValue)
            {
                builder.Call <AndroidJavaObject>("withCrashReporting", self.CrashReporting.Value);
            }

            if (self.Logs ?? false)
            {
                builder.Call <AndroidJavaObject>("withLogs");
            }

            if (self.HandleFirstActivationAsUpdate.HasValue)
            {
                builder.Call <AndroidJavaObject>("handleFirstActivationAsUpdate",
                                                 self.HandleFirstActivationAsUpdate.Value);
            }

            if (self.PreloadInfo.HasValue)
            {
                YandexAppMetricaPreloadInfo preloadInfo        = self.PreloadInfo.Value;
                AndroidJavaClass            preloadInfoClass   = new AndroidJavaClass("com.yandex.metrica.PreloadInfo");
                AndroidJavaObject           preloadInfoBuilder =
                    preloadInfoClass.CallStatic <AndroidJavaObject>("newBuilder", preloadInfo.TrackingId);
                foreach (KeyValuePair <string, string> kvp in preloadInfo.AdditionalInfo)
                {
                    preloadInfoBuilder.Call <AndroidJavaObject>("setAdditionalParams", kvp.Key, kvp.Value);
                }

                builder.Call <AndroidJavaObject>("withPreloadInfo", preloadInfoBuilder.Call <AndroidJavaObject>("build"));
            }

            if (self.StatisticsSending.HasValue)
            {
                builder.Call <AndroidJavaObject>("withStatisticsSending", self.StatisticsSending.Value);
            }

            if (self.UserProfileID != null)
            {
                builder.Call <AndroidJavaObject>("withUserProfileID", self.UserProfileID);
            }

            if (self.RevenueAutoTrackingEnabled.HasValue)
            {
                builder.Call <AndroidJavaObject>("withRevenueAutoTrackingEnabled",
                                                 self.RevenueAutoTrackingEnabled.Value);
            }

            // Native crashes are currently not supported
            builder.Call <AndroidJavaObject>("withNativeCrashReporting", false);
            // Sessions are monitored by plugin itself
            builder.Call <AndroidJavaObject>("withSessionsAutoTrackingEnabled", false);
            appMetricaConfig = builder.Call <AndroidJavaObject>("build");
        }

        return(appMetricaConfig);
    }
Beispiel #2
0
    public static AndroidJavaObject ToAndroidAppMetricaConfig(this YandexAppMetricaConfig self)
    {
        AndroidJavaObject androidJavaObject = null;

        using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.yandex.metrica.YandexMetricaConfig"))
        {
            AndroidJavaObject androidJavaObject2 = androidJavaClass.CallStatic <AndroidJavaObject>("newConfigBuilder", new object[1]
            {
                self.ApiKey
            });
            if (self.Location.HasValue)
            {
                YandexAppMetricaConfig.Coordinates value = self.Location.Value;
                androidJavaObject2.Call <AndroidJavaObject>("withLocation", new object[1]
                {
                    value.ToAndroidLocation()
                });
            }
            if (self.AppVersion != null)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withAppVersion", new object[1]
                {
                    self.AppVersion
                });
            }
            if (self.LocationTracking.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withLocationTracking", new object[1]
                {
                    self.LocationTracking.Value
                });
            }
            if (self.SessionTimeout.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withSessionTimeout", new object[1]
                {
                    self.SessionTimeout.Value
                });
            }
            if (self.CrashReporting.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withCrashReporting", new object[1]
                {
                    self.CrashReporting.Value
                });
            }
            bool?logs = self.Logs;
            if (logs.HasValue && logs.Value)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withLogs", new object[0]);
            }
            if (self.InstalledAppCollecting.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withInstalledAppCollecting", new object[1]
                {
                    self.InstalledAppCollecting.Value
                });
            }
            if (self.HandleFirstActivationAsUpdate.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("handleFirstActivationAsUpdate", new object[1]
                {
                    self.HandleFirstActivationAsUpdate.Value
                });
            }
            if (self.PreloadInfo.HasValue)
            {
                YandexAppMetricaPreloadInfo value2             = self.PreloadInfo.Value;
                AndroidJavaClass            androidJavaClass2  = new AndroidJavaClass("com.yandex.metrica.PreloadInfo");
                AndroidJavaObject           androidJavaObject3 = androidJavaClass2.CallStatic <AndroidJavaObject>("newBuilder", new object[1]
                {
                    value2.TrackingId
                });
                foreach (KeyValuePair <string, string> item in value2.AdditionalInfo)
                {
                    androidJavaObject3.Call <AndroidJavaObject>("setAdditionalParams", new object[2]
                    {
                        item.Key,
                        item.Value
                    });
                }
                androidJavaObject2.Call <AndroidJavaObject>("withPreloadInfo", new object[1]
                {
                    androidJavaObject3.Call <AndroidJavaObject>("build", new object[0])
                });
            }
            if (self.StatisticsSending.HasValue)
            {
                androidJavaObject2.Call <AndroidJavaObject>("withStatisticsSending", new object[1]
                {
                    self.StatisticsSending.Value
                });
            }
            androidJavaObject2.Call <AndroidJavaObject>("withNativeCrashReporting", new object[1]
            {
                false
            });
            return(androidJavaObject2.Call <AndroidJavaObject>("build", new object[0]));
        }
    }
Beispiel #3
0
    public static Hashtable ToHashtable(this YandexAppMetricaConfig self)
    {
        Hashtable data = new Hashtable {
            { "ApiKey", self.ApiKey }
        };

        if (self.AppVersion != null)
        {
            data["AppVersion"] = self.AppVersion;
        }

        if (self.Location.HasValue)
        {
            YandexAppMetricaConfig.Coordinates location = self.Location.Value;
            data["Location"] = new Hashtable {
                { "Latitude", location.Latitude }, { "Longitude", location.Longitude }
            };
        }

        if (self.SessionTimeout.HasValue)
        {
            data["SessionTimeout"] = self.SessionTimeout.Value;
        }

        if (self.CrashReporting.HasValue)
        {
            data["CrashReporting"] = self.CrashReporting.Value;
        }

        if (self.LocationTracking.HasValue)
        {
            data["LocationTracking"] = self.LocationTracking.Value;
        }

        if (self.Logs.HasValue)
        {
            data["Logs"] = self.Logs.Value;
        }

        if (self.HandleFirstActivationAsUpdate.HasValue)
        {
            data["HandleFirstActivationAsUpdate"] = self.HandleFirstActivationAsUpdate.Value;
        }

        if (self.PreloadInfo.HasValue)
        {
            YandexAppMetricaPreloadInfo preloadInfo = self.PreloadInfo.Value;
            data["PreloadInfo"] = new Hashtable
            {
                { "TrackingId", preloadInfo.TrackingId },
                { "AdditionalInfo", new Hashtable(preloadInfo.AdditionalInfo) }
            };
        }

        if (self.StatisticsSending.HasValue)
        {
            data["StatisticsSending"] = self.StatisticsSending.Value;
        }

        if (self.AppForKids.HasValue)
        {
            data["AppForKids"] = self.AppForKids.Value;
        }

        if (self.UserProfileID != null)
        {
            data["UserProfileID"] = self.UserProfileID;
        }

        if (self.RevenueAutoTrackingEnabled.HasValue)
        {
            data["RevenueAutoTrackingEnabled"] = self.RevenueAutoTrackingEnabled.Value;
        }

        return(data);
    }