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()); } }