private void ScheduleNotification(string id, INotificationOptions options)
        {
            var intent = new Intent(Application.Context, typeof(AlarmHandler))
                         .SetAction("AlarmHandlerIntent" + id);

            var notification = new ScheduledNotification()
            {
                AndroidOptions   = (AndroidOptions)options.AndroidOptions,
                ClearFromHistory = options.ClearFromHistory,
                DelayUntil       = options.DelayUntil,
                Description      = options.Description,
                IsClickable      = options.IsClickable,
                Title            = options.Title
            };

            var serializedNotification = Serialize(notification);

            intent.PutExtra(AlarmHandler.NotificationKey, serializedNotification);
            intent.PutExtra(NotificationId, id);

            var pendingIntent = PendingIntent.GetBroadcast(Application.Context, 0, intent, PendingIntentFlags.CancelCurrent);
            var timeTriggered = ConvertToMilliseconds(options.DelayUntil.Value);
            var alarmManager  = Application.Context.GetSystemService(Context.AlarmService) as AlarmManager;

            alarmManager.Set(AlarmType.RtcWakeup, timeTriggered, pendingIntent);
        }
        void ScheduleNotification(string id, INotificationOptions options)
        {
            if (!string.IsNullOrEmpty(id) && options != null)
            {
                var intent = new Intent(Application.Context, typeof(AlarmHandler)).SetAction("AlarmHandlerIntent" + id);

                if (!string.IsNullOrEmpty(options.AndroidOptions.HexColor) && options.AndroidOptions.HexColor.Substring(0, 1) != "#")
                {
                    options.AndroidOptions.HexColor = "#" + options.AndroidOptions.HexColor;
                }

                var notification = new ScheduledNotification()
                {
                    AndroidOptions   = (AndroidOptions)options.AndroidOptions,
                    ClearFromHistory = options.ClearFromHistory,
                    DelayUntil       = options.DelayUntil,
                    Description      = options.Description,
                    IsClickable      = options.IsClickable,
                    Title            = options.Title
                };

                var serializedNotification = Serialize(notification);
                intent.PutExtra(AlarmHandler.NotificationKey, serializedNotification);
                intent.PutExtra(NotificationId, id);
                intent.PutExtra(NotificationForceOpenApp, options.AndroidOptions.ForceOpenAppOnNotificationTap);

                var pendingIntent = PendingIntent.GetBroadcast(Application.Context, (StartId + int.Parse(id)), intent, PendingIntentFlags.CancelCurrent);
                var timeTriggered = ConvertToMilliseconds(options.DelayUntil.Value);
                var alarmManager  = Application.Context.GetSystemService(Context.AlarmService) as AlarmManager;

                alarmManager.Set(AlarmType.RtcWakeup, timeTriggered, pendingIntent);
            }
        }
        private string Serialize(ScheduledNotification options)
        {
            var xmlSerializer = new XmlSerializer(typeof(ScheduledNotification));

            using (var stringWriter = new StringWriter())
            {
                xmlSerializer.Serialize(stringWriter, options);
                return(stringWriter.ToString());
            }
        }