@alekseyHunter
Охотник за знаниями

Как отправлять локальные уведомления в фоновом режиме (Xamarin)?

Добрый день.

Требуется отправлять локальные уведомления в фоновом режиме.
Написал класс для отображения локальных уведомления.
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            var alarmIntent = new Intent(this, typeof(BackgroundReceiver));

            var pending = PendingIntent.GetBroadcast(this, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);

            var alarmManager = GetSystemService(AlarmService).JavaCast<AlarmManager>();
            alarmManager.SetRepeating(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + 1 * 1000, 15 * 1000, pending);
    }
}

     [BroadcastReceiver]
    public class BackgroundReceiver : BroadcastReceiver
    {
        static readonly int NOTIFICATION_ID = 1000;
        static readonly string CHANNEL_ID = "location_notification";
        internal static readonly string COUNT_KEY = "count";

        public override void OnReceive(Context context, Intent intent)
        {
            PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
            PowerManager.WakeLock wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "BackgroundReceiver");
            wakeLock.Acquire();

            var builder = new NotificationCompat.Builder(context, CHANNEL_ID)
                          .SetAutoCancel(true)
                          .SetContentTitle("Прием заявлений")
                          .SetContentText($"У вас остался 1 день до подачи заявления."); 

            Notification notification = builder.Build();

            notification.Defaults |= NotificationDefaults.Vibrate;

            var notificationManager = NotificationManagerCompat.From(context);
            notificationManager.Notify(NOTIFICATION_ID, notification);

            wakeLock.Release();
        }
    }


В фоновом режиме создает уведомление раз в минуту, а не раз в 15 секунд. Это из-за доступности ресурсов?
В списке работающих приложений моего нет, почему?
Уведомления сбрасываются, если устройство перезагружается. Как этого избежать?
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
S2 | CRM Тольятти
от 120 000 до 200 000 ₽
Oblako Studio Санкт-Петербург
от 120 000 до 240 000 ₽
Почта Банк Москва
от 207 000 до 240 000 ₽
05 апр. 2020, в 06:56
10000 руб./за проект
04 апр. 2020, в 23:07
30000 руб./за проект
04 апр. 2020, в 23:05
100000 руб./за проект