Привет, я работаю над вариантом использования для своего приложения Xamarin.forms. Вариант использования - выполнить некоторые запросы sqlite во время установки приложения, чтобы получить информацию об изменениях базы данных в новой версии приложения.
В настоящее время, когда я запускаю свое приложение после обновления до более новой версии, я вызываю свой api, чтобы получить изменения базы данных в новой версии. Например, если какая-либо существующая таблица обновлена, я получаю информацию во время запуска приложения и, соответственно, сбрасываю эти таблицы базы данных. Ниже мой код, который выполняется и получает эту информацию:
public async Task CheckVersionUpdateDevice()
{
try
{
AppVersion _appVersion = new AppVersion();
string strSQL = "SELECT * FROM AppVersion";
var existingAppVersion = await sqlLiteDatabase.GetItemsAsync<AppVersion>(strSQL);
Version _currentVersion = Version.Parse(existingAppVersion[0].versionNumber);
Version _newVersion = AppInfo.Version;
int comparisonResult = _newVersion.CompareTo(_currentVersion);
if (comparisonResult > 0)
{
var result = _deviceService.GetVersionChangeData(existingAppVersion[0].versionNumber); // #1 Get database changes in new version
if (result != null && result[0].ChangeList != null && result[0].ChangeList.Count > 0)
{
UpdateTablesAndFiles(result[0].ChangeList); // #2 Reset all the tables.
}
}
_appVersion.versionNumber = _newVersion.ToString();
await sqlLiteDatabase.InsertOrReplaceAsync<AppVersion>(_appVersion, false);
}
catch (Exception ex)
{
await App.HandleException(ex);
}
}
Все работает нормально, но недавно я столкнулся с проблемой, когда пользователь обновил приложение, но запустил приложение в автономном режиме. Поскольку приложение было запущено в автономном режиме, мой api на № 1 вернулся с исключением о подключении к Интернету. Из-за этого обновленная информация о базе данных не была получена, и мой обновленный код приложения, который нуждался в этой информации, впоследствии не удалось.
Я проверил другие сообщения SO здесь, но не смог найти жизнеспособное решение, так что интересно если у кого-то есть предложения, как выполнить какое-либо действие во время установки приложения, чтобы получить эти последние изменения базы данных. Поскольку установка приложения всегда будет происходить при подключении интернета.
Любые предложения или мысли приветствуются!