Как включить уведомления во Flutter, когда приложение полностью закрыто (даже удалено из последних приложений)?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как включить уведомления во Flutter, когда приложение полностью закрыто (даже удалено из последних приложений)?

Сообщение Anonymous »

Я разрабатываю приложение Flutter, которое должно отправлять уведомления, даже если приложение полностью закрыто, в том числе когда оно удалено из списка последних приложений. Я использую следующую настройку:
Пакеты:
  • flutter_local_notifications для уведомлений.
  • battery_plus для обнаружения изменений состояния аккумулятора (например, подключено или отключено зарядное устройство).
Я хочу, чтобы при подключении зарядного устройства появлялось уведомление или отключен, даже если приложение не работает в в фоновом режиме.
Уведомления работают, когда приложение запущено или в фоновом режиме, но прекращаются, когда приложение закрывается (удаляется из последних приложений).
Получение уведомления, когда приложение находится в списке недавних, но если оно отключено, уведомление не приходит
main.dart:
import 'package:flutter/material.dart';
import 'package:battery_plus/battery_plus.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Charger Notification',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomeScreen(),
);
}
}

class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);

@override
State createState() => _HomeScreenState();
}

class _HomeScreenState extends State {
final Battery _battery = Battery();
final FlutterLocalNotificationsPlugin _notificationsPlugin =
FlutterLocalNotificationsPlugin();

BatteryState? _batteryState;

@override
void initState() {
super.initState();
_initializeNotifications();
_listenToBatteryState();
}

Future _initializeNotifications() async {
// Request notification permission
if (await Permission.notification.isDenied) {
await Permission.notification.request();
}

const InitializationSettings initializationSettings = InitializationSettings(
android: AndroidInitializationSettings('@mipmap/ic_launcher'),
);

await _notificationsPlugin.initialize(initializationSettings);
}

void _showNotification(String title, String body) async {
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails(
'charger_channel',
'Charger Notifications',
channelDescription: 'Notifications when charger is plugged or unplugged',
importance: Importance.high,
priority: Priority.high,
);

const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);

await _notificationsPlugin.show(
0,
title,
body,
notificationDetails,
);
}

void _listenToBatteryState() {
_battery.onBatteryStateChanged.listen((BatteryState state) {
if (_batteryState != state) {
setState(() {
_batteryState = state;
});

if (state == BatteryState.charging) {
_showNotification('Charger Connected', 'Your device is now charging.');
} else if (state == BatteryState.discharging) {
_showNotification(
'Charger Disconnected', 'Your device is no longer charging.');
}
}
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Charger Notification App'),
),
body: Center(
child: Text(
_batteryState == BatteryState.charging
? 'Device is Charging'
: _batteryState == BatteryState.connectedNotCharging
? 'Device is Not Charging'
: 'Unknown State',
style: const TextStyle(fontSize: 20),
),
),
);
}
}

manifest.xml
























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

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

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

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

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

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

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