Эта проблема была вызвана моим tokenExpiration
на моей странице App.xaml.
В какой-то момент, когда я тестировал свое приложение на iPhone XS Max 12.1, строка была сохранена где-то еще, так что, когда приложениеинициализирует эту строку не пустой, поэтому var tokenDate = Convert.ToDateTime(tokenExpiration);
не будет выдавать ошибку.
Тогда мой оператор if может быть успешно выполнен, и у моего приложения будет базовое представление корня.
Однако для нового симулятора, который я раньше не использовал и не установилtokenExpiration
строка раньше, когда вы захотите получить эту tokenExpiration
, она вернет пустую строку в качестве настройки по умолчанию.
Тогда var tokenDate = Convert.ToDateTime(tokenExpiration);
выдаст ошибку, так как не может преобразовать пустую строку.
Наконец, мой код будет выполняться в моем операторе catch
, что означает, что мое приложение теряет базовое корневое представление, и именно это вызывает мою проблему.
Предыдущий код:
try
{
TaskScheduler.UnobservedTaskException += (sender, e) => {
Console.WriteLine(e.Exception.ToString(), Category.Exception, Priority.High);
};
await NavigationService.NavigateAsync("/LoginPage");
}
catch (Exception e)
{
Console.WriteLine(e.ToString(), Category.Exception, Priority.High);
}
Обновленный код:
var tokenExpiration = Preferences.Get("facebookTokenExpiration", string.Empty);
if (tokenExpiration != null && tokenExpiration.Length > 0)
{
var tokenDate = Convert.ToDateTime(tokenExpiration);
var tokenStatus = DateTime.Now.CompareTo(tokenDate);
//Token is still active
if (tokenExpiration != string.Empty & tokenStatus < 0)
{
await NavigationService.NavigateAsync("/MainTabbedPage?selectedTab=PuppyDetailsPage");
}
else
{
await NavigationService.NavigateAsync("/Login");
}
}
else
{
await NavigationService.NavigateAsync("/MainTabbedPage?selectedTab=PuppyDetailsPage");
}
Редактировать: Спасибо @LandLu forums.xamarin.com за помощь в решении этой проблемы.