private void SaveSessionStorage()
{
_sessionStorage._startTime = StartTime;
_sessionStorage._stopTime = StopTime;
_sessionStorage._preStartTime = PreStartTime;
_sessionStorage._sessionId = SessionId;
_sessionStorage._duration = Duration;
// store session into file
_logger.DebugFormat("Mobile Analytics is about to store session info: {0} ", JsonMapper.ToJson(_sessionStorage));
#if PCL
IFolder rootFolder = FileSystem.Current.LocalStorage;
IFile file = rootFolder.CreateFileAsync(_sessionStorageFileFullPath, CreationCollisionOption.ReplaceExisting).Result;
file.WriteAllTextAsync(JsonMapper.ToJson(_sessionStorage)).Wait();
#elif BCL
string directory = Path.GetDirectoryName(_sessionStorageFileFullPath);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
File.WriteAllText(_sessionStorageFileFullPath, JsonMapper.ToJson(_sessionStorage));
#elif UNITY
Action action = () =>
{
// create a file to store session info
if (!File.Exists(_sessionStorageFileFullPath))
{
FileStream fs = File.Create(_sessionStorageFileFullPath);
fs.Close();
File.WriteAllText(_sessionStorageFileFullPath, JsonMapper.ToJson(_sessionStorage));
}
else
{
File.WriteAllText(_sessionStorageFileFullPath, String.Empty);
File.WriteAllText(_sessionStorageFileFullPath, JsonMapper.ToJson(_sessionStorage));
}
};
if (UnityInitializer.IsMainThread())
{
action();
}
else
{
ManualResetEvent e = new ManualResetEvent(false);
UnityRequestQueue.Instance.ExecuteOnMainThread(() =>
{
action();
e.Set();
});
e.WaitOne();
}
#endif
}