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);
        }
示例#2
0
 public Notification SetInterval(NotificationInterval interval)
 {
     this.Interval = interval;
     return(this);
 }
示例#3
0
        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);
            }
        }