public override void OnReceive(Context context, Intent intent) { string Title = intent.GetStringExtra("Title"); string Message = intent.GetStringExtra("Message"); int NotificationId = intent.GetIntExtra("NotificationId", 0); string time = intent.GetStringExtra("Time"); NotificationInterval interval = (NotificationInterval)Enum.Parse(typeof(NotificationInterval), intent.GetStringExtra("Interval")); var notificationDate = DateTime.Parse(time); if (interval == NotificationInterval.None && notificationDate.Date != DateTime.Now.Date) { return; } SendNotification(context, Title, Message); }
public Notification SetInterval(NotificationInterval interval) { this.Interval = interval; return(this); }
void IAlarmAndNotificationService.ScheduleLocalNotification(string notificationTitle, string notificationMessage, DateTime specificDateTime, TimeSpan timeSpan, int notificationId, NotificationInterval interval) { DateTime utcDateTime = new DateTime(specificDateTime.Ticks + timeSpan.Ticks).ToUniversalTime(); Java.Util.Date nativeDate = DateTimeToNativeDate(utcDateTime); Intent alarmReciver = new Intent(Forms.Context, typeof(AlarmReceiver)); alarmReciver.PutExtra("Title", notificationTitle); alarmReciver.PutExtra("Message", notificationMessage); alarmReciver.PutExtra("NotificationId", notificationId); alarmReciver.PutExtra("Time", (specificDateTime + timeSpan).ToString()); alarmReciver.PutExtra("Interval", interval.ToString()); System.Diagnostics.Debug.WriteLine($"Schedule LocalNotification : for time : {nativeDate.ToString()}"); PendingIntent pendingIntent = PendingIntent.GetBroadcast(Forms.Context, notificationId, alarmReciver, PendingIntentFlags.CancelCurrent); AlarmClockInfo alarmClockInfo = new AlarmClockInfo(nativeDate.Time, pendingIntent); var alarmManager = (AlarmManager)Android.App.Application.Context.GetSystemService(Context.AlarmService); if (interval == NotificationInterval.Day) { alarmManager.SetRepeating(AlarmType.RtcWakeup, nativeDate.Time, IntervalDay, pendingIntent); } else if (interval == NotificationInterval.Hours) { alarmManager.SetRepeating(AlarmType.RtcWakeup, nativeDate.Time, IntervalHour, pendingIntent); } else if (interval == NotificationInterval.Week) { alarmManager.SetRepeating(AlarmType.RtcWakeup, nativeDate.Time, IntervalDay * 7, pendingIntent); } else if (interval == NotificationInterval.None) { alarmManager.Set(AlarmType.RtcWakeup, nativeDate.Time, pendingIntent); } }