Запланированные (основанные на времени) уведомления не стреляют на Android-немедленные уведомления работаютIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Запланированные (основанные на времени) уведомления не стреляют на Android-немедленные уведомления работают

Сообщение Anonymous »

Я создаю свое первое приложение Flutter для Android и iOS, и я застрял с запланированными уведомлениями на Android. В выбранном буднем и времени. < /p>
< /li>
[*] разрешения: на Android приложение требует разрешения уведомления, и я также включил тревоги и напоминания (расписание точных сигналов тревоги) в настройках системы. Оба включены. /> Устройство (S): [Android Studio + API среднего устройства 36, Samsung Galaxy S23 + Android 15 < /li>
< /ul>
Что я ожидаю: < /p>
Когда пользователь выбирает неделю и время (например, понедельник в 09:00), то, что должно появиться, и повторить неделю. случается: < /p>
Ничто не стреляет в запланированное время. Нет аварий. Немедленные уведомления с использованием той же работы канала надежно.import 'package:my_app/config/notifications.dart';

// Notifications
const Divider(height: 32),
SwitchListTile(
title: const Text('Benachrichtigungen aktivieren'),
value: _notifEnabled,
onChanged: _toggleNotifications,
),

if (_notifEnabled) ...[
_buildExactStatusTile(), // neu

const SizedBox(height: 8),
const Text('Wochentag', style: TextStyle(fontWeight: FontWeight.bold)),
Wrap(
spacing: 8,
children: List.generate(7, (i) {
final int day = i + 1; // 1=Mo ... 7=So
const labels = ['Mo','Di','Mi','Do','Fr','Sa','So'];
return ChoiceChip(
label: Text(labels),
selected: _notifWeekday == day,
onSelected: (_) async {
setState(() => _notifWeekday = day);
await _persistNotificationPrefs();
await _applyNotificationSchedule();
},
);
}),
),

const SizedBox(height: 16),
ListTile(
leading: const Icon(Icons.access_time),
title: Text(
_notifTime == null
? 'Uhrzeit auswählen'
: 'Uhrzeit: ${_notifTime!.format(context)}',
),
onTap: _pickNotificationTime,
),

if (_notifWeekday == null || _notifTime == null)
const Padding(
padding: EdgeInsets.only(top: 8),
child: Text(
'Hinweis: Bitte Wochentag und Uhrzeit wählen, damit die Erinnerung geplant wird.',
style: TextStyle(color: Colors.grey),
),
),
],
],
),
< /code>
Уведомления < /p>
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:timezone/timezone.dart' as tz;
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:timezone/data/latest_all.dart' as tzdata;

static tz.TZDateTime _nextWeekdayTime({
required int weekday,
required int hour,
required int minute,
Duration grace = const Duration(seconds: 30),
}) {
final now = tz.TZDateTime.now(tz.local);
final todayAt = tz.TZDateTime(tz.local, now.year, now.month, now.day, hour, minute);
final daysUntil = (weekday - now.weekday) % 7;
var scheduled = todayAt.add(Duration(days: daysUntil));
if (scheduled.isBefore(now.add(grace))) {
scheduled = scheduled.add(const Duration(days: 7));
}
return scheduled;
}

static Future scheduleWeekly({
required int id,
required String title,
required String body,
required int weekday,
required int hour,
required int minute,
String? payload,
}) async {
final when = _nextWeekdayTime(weekday: weekday, hour: hour, minute: minute);
final mode = await _pickAndroidScheduleMode();

< /code>
main < /p>
import 'package:timezone/data/latest_all.dart' as tz;
import 'package:timezone/timezone.dart' as tz;
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:my_app/config/notifications.dart' show NotificationsService;

void main() async {
WidgetsFlutterBinding.ensureInitialized();
tz.initializeTimeZones();
final name = await FlutterTimezone.getLocalTimezone(); // "Europe/Berlin" etc.
tz.setLocalLocation(tz.getLocation(name));
await NotificationsService.init();
< /code>
androidmanifest < /pbr />



< /code>
Что я пробовал: < /p>

подтвержденное разрешение уведомлений предоставляется (Android 13+). < /li>
включенные сигналы и напоминания (расписание точных тревоги) в параметрах системы (Android 12+). /> Проверено, что канал не заблокирован, и важность максимума. (Android 13+). < /Li>
Включенные тревоги и напоминания (расписание точных сигналов тревоги) в настройках системы (Android 12+). < /Li>
Протестирован с помощью Android -AllowlowwhileDle: True. < /Li>
Проверено, что канал не блокируется, а важность. < /Li>
. Приложение.
Протестировано на эмуляторе и физическом устройстве.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... mmediate-n
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»