Я занимаюсь разработкой приложения Xamarin Forms, для которого мне нужно было написать собственный код, я получил код, работающий в Android, но не могу заставить его работать для iOS. В Main.cs я запускаю запланированный таймер с помощью NSTimer, который после завершения должен запустить код AppDelegate для приложения Xamarin.
Main.cs:
public class Application
{
private static ISettings AppSettings => CrossSettings.Current;
private static double startTimeMillis;
static void Main(string[] args)
{
startTimeMillis = DateTime.Now.Ticks / TimeSpan.TicksPerSecond;
CheckSavedToken(args);
}
private static void CheckSavedToken(string[] args)
{
if (AppSettings.Contains(App.LoginToken))
{
string loginToken = AppSettings.GetValueOrDefault(App.LoginToken, string.Empty);
if (loginToken == string.Empty)
{
AppSettings.Remove(App.LoginToken);
}
}
double delay = 750 - (DateTime.Now.Ticks / TimeSpan.TicksPerSecond - startTimeMillis);
if (delay > 0)
{
NSTimer.CreateScheduledTimer(delay, timer => UIApplication.Main(args, null, "AppDelegate"));
}
else
{
UIApplication.Main(args, null, "AppDelegate");
}
}
}
Я хочу проверить токен входа и оставаться на этом экране до тех пор, пока не пройдет 750 миллисекунд, после чего AppDelegate сможет запустить часть приложения Xamarin Forms.
Я не знаю, что я делаю неправильно, я пытался отладить с помощью try catch, но приложение вылетало без достижения ловушки, я также пытался использовать Task.Delay()
, но это то же самое. Даже если я установлю количество времени на 1, ничего не произойдет.
EDIT:
Я также пытался использовать DispatchQueue (с тем же результатом):
DispatchQueue.MainQueue.DispatchAfter(new DispatchTime(DispatchTime.Now, new TimeSpan(0, 0, 0, 0, (int)delay)),
() => UIApplication.Main(args, null, "AppDelegate"));
Я надеюсь, что кто-то может помочь мне с этим.
Заранее спасибо.