@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 секунд. Это из-за доступности ресурсов?
В списке работающих приложений моего нет, почему?
Уведомления сбрасываются, если устройство перезагружается. Как этого избежать?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы