public String ToJsonString()
{
lock(_lock)
{
_client = new Dictionary<string, string>();
_env = new Dictionary<string, string>();
_services = new Dictionary<string, IDictionary>();
#if PCL || UNITY
// client
_client.Add(CLIENT_ID_KEY, _clientID);
_client.Add(CLIENT_APP_TITLE_KEY, _appInfo.AppTitle);
_client.Add(CLIENT_APP_VERSION_NAME_KEY, _appInfo.AppVersionName);
_client.Add(CLIENT_APP_VERSION_CODE_KEY, _appInfo.AppVersionCode);
_client.Add(CLIENT_APP_PACKAGE_NAME_KEY, _appInfo.PackageName);
// env
_env.Add(ENV_PLATFORM_KEY, _envInfo.Platform);
_env.Add(ENV_PLATFORM_VERSION_KEY, _envInfo.PlatformVersion);
_env.Add(ENV_LOCALE_KEY, _envInfo.Locale);
_env.Add(ENV_MAKE_KEY, _envInfo.Make);
_env.Add(ENV_MODEL_KEY, _envInfo.Model);
#elif BCL
// client
_client.Add(CLIENT_ID_KEY, _clientID);
if (!string.IsNullOrEmpty(_config.AppTitle))
_client.Add(CLIENT_APP_TITLE_KEY, _config.AppTitle);
if (!string.IsNullOrEmpty(_config.AppVersionName))
_client.Add(CLIENT_APP_VERSION_NAME_KEY, _config.AppVersionName);
if (!string.IsNullOrEmpty(_config.AppVersionCode))
_client.Add(CLIENT_APP_VERSION_CODE_KEY, _config.AppVersionCode);
if (!string.IsNullOrEmpty(_config.AppPackageName))
_client.Add(CLIENT_APP_PACKAGE_NAME_KEY, _config.AppPackageName);
// env
if (!string.IsNullOrEmpty(_config.Platform))
_env.Add(ENV_PLATFORM_KEY, _config.Platform);
else
_env.Add(ENV_PLATFORM_KEY, Environment.OSVersion.Platform.ToString());
if (!string.IsNullOrEmpty(_config.PlatformVersion))
_env.Add(ENV_PLATFORM_VERSION_KEY, _config.PlatformVersion);
else
_env.Add(ENV_PLATFORM_VERSION_KEY, Environment.OSVersion.Version.ToString());
if (!string.IsNullOrEmpty(_config.Locale))
_env.Add(ENV_LOCALE_KEY, _config.Locale);
else
_env.Add(ENV_LOCALE_KEY, System.Globalization.CultureInfo.CurrentCulture.Name);
if (!string.IsNullOrEmpty(_config.Make))
_env.Add(ENV_MAKE_KEY, _config.Make);
if (!string.IsNullOrEmpty(_config.Model))
_env.Add(ENV_MODEL_KEY, _config.Model);
#endif
// services
if (!string.IsNullOrEmpty(this.AppID))
{
IDictionary mobileAnalyticsService = new Dictionary<string, string>();
mobileAnalyticsService.Add(SERVICE_MOBILE_ANALYTICS_APP_ID_KEY, AppID);
_services.Add(SERVICE_MOBILE_ANALYTICS_KEY, mobileAnalyticsService);
}
_clientContext = new Dictionary<string, IDictionary>();
_clientContext.Add(CLIENT_KEY, _client);
_clientContext.Add(ENV_KEY, _env);
_clientContext.Add(CUSTOM_KEY, _custom);
_clientContext.Add(SERVICES_KEY, _services);
return JsonMapper.ToJson(_clientContext);
}
}
}