Я пытаюсь создать уведомление, которое будет запускаться по расписанию. Я хочу, чтобы уведомление показывалось один раз в день в установленное время (не обязательно). Итак, я пытаюсь создать PeriodicWorkRequest, который запускается каждые 24 часа, и отложить начало рабочего запроса до времени дня, когда я хочу, чтобы он выполнялся. Я могу запустить его по расписанию, но всякий раз, когда я его создаю, он запускается сразу же. Я нашел несколько вопросов, в которых говорится, что вы можете использовать .setInitialDelay () в построителе, однако это, похоже, недоступно в API Xamarin Work Manager. Я также пробовал .SetPeriodStartTime () в классе Builder после нахождения метода в определении класса Builder, но это, похоже, ни на что не влияет.
MessagingCenter.Subscribe<StartNotificationRemindersMessage>(this, "StartNotificationRemindersMessage", message => {
TimeSpan startDelay = DateTime.Now.AddMinutes(2) - DateTime.Now;
PeriodicWorkRequest notificationsWorkRequest = PeriodicWorkRequest.Builder.From<NotificationsWorker>(1, TimeUnit.Days).SetPeriodStartTime(startDelay).Build();
WorkManager.Instance.Enqueue(notificationsWorkRequest);
});
Здесь я создаю периодi c запрос на работу и пытается добавить 2-х минутную задержку к запуску.
А вот класс NotificationsWorker.
class NotificationsWorker : Worker
{
public NotificationsWorker(Context context, WorkerParameters workerParameters) : base(context, workerParameters)
{
}
public override Result DoWork()
{
CrossLocalNotifications.Current.Show("GCS Reminder", "Testing reminder notifications");
return Result.InvokeSuccess();
}
}
Если кто-то может показать мне, что я делаю не так, был бы очень признателен.
Спасибо!