Xamarin.forms Расписание локальных уведомлений - PullRequest
0 голосов
/ 14 июля 2020

Я следую документации https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/local-notifications о локальных уведомлениях. Реализую и отлично работаю. Теперь мой сценарий: пользователь вводит Start Date, Repetition time и Number of Repetitions. Мне нужна какая-то фоновая служба для вызова этих уведомлений pu sh? Любое предложение, возможно, запланировать это на устройстве?

ОБНОВЛЕНИЕ Я добавил общую службу по этой ссылке: https://www.c-sharpcorner.com/article/how-to-send-local-notification-with-repeat-interval-in-xamarin-forms/ И теперь я не знаю, как остановить Alarm Manager и UILocalNotification, когда я отправляю пример пользователя, введенного для отправки 20 уведомлений, после 20 уведомление должно прекратиться.

1 Ответ

2 голосов
/ 15 июля 2020

Мы можем использовать AlarmManager.Cancel и UIApplication.SharedApplication.CancelLocalNotification, чтобы остановить локальные уведомления по расписанию.

iOS:

void CancleScheduleNotification()
{
    UILocalNotification[] localNotifications= UIApplication.SharedApplication.ScheduledLocalNotifications;
    //Traverse this array to get the UILocalNotification we want according to the key
    foreach (var localNotification in localNotifications)
    {
        if(localNotification.UserInfo.ObjectForKey(new NSString("key")).ToString() == "value")
        {
            UIApplication.SharedApplication.CancelLocalNotification(localNotification);
        }
    }
}

Android:

void CancleScheduleNotification()
{
    AlarmManager am = (AlarmManager)GetSystemService(Context.AlarmService);
    Intent intent = new Intent("LILY_TEST_INTENT");
    intent.SetClass(this, LilyReceiver.class);  
    intent.SetData(Android.Net.Uri.Parse("content://calendar/calendar_alerts/1"));  

    PendingIntent sender = PendingIntent.GetBroadcast(this, 0, intent, PendingIntentFlags.NoCreate);  
    if (sender != null){  
        Log.Info("lily","cancel alarm");  
        am.Cancel(sender);  
    }else{  
        Log.Info("lily","sender == null");  
    }  
}
...