Как отправить уведомление FCM из бэкэнда, когда приложение Flutter прекращено?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как отправить уведомление FCM из бэкэнда, когда приложение Flutter прекращено?

Сообщение Anonymous »

Я работаю над приложением Flutter, которое использует Firebase для уведомлений. Прямо сейчас уведомления работают нормально, когда приложение Flutter находится в фоновом режиме. Однако, когда я закрываю приложение, уведомление не проходит. Прямо сейчас моя целевая платформа - Android (и устройство, которое я использую, является Android версия 11). < /P>
Вот мой бэкэнд -код или, по крайней мере, та часть, которая отправляет уведомления (это сервер колбы): < /p>

Код: Выделить всё

import firebase_admin
from firebase_admin import auth, messaging, credentials

cred = credentials.Certificate("service-account.json")
firebase_admin.initialize_app(cred)

message = messaging.Message(
notification=messaging.Notification(
title="Wow!",
body="This background push notification actually worked!"
),
data={
"foo": "bar"
},
android=messaging.AndroidConfig(
notification=messaging.AndroidNotification(
title="Wow!",
body="This background push notification actually worked!",
channel_id="high_importance_channel",
priority="high"
),
priority="high"
),
topic="current"
)

response = messaging.send(message)

print(response)
< /code>
Изменить: я добавил данные в код выше, чтобы показать, что он ничего не меняет, уведомления по -прежнему отправляют только в фоновом режиме, а не в случае прекращения приложения.@pragma('vm:entry-point')
Future notificationHandler(RemoteMessage message) async {
WidgetsFlutterBinding.ensureInitialized();

await Firebase.initializeApp();

const AndroidNotificationChannel channel = AndroidNotificationChannel(
'high_importance_channel',
'High Importance Notifications',
description: 'This channel is used for important notifications.',
importance: Importance.high
);

final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation()?.createNotificationChannel(channel);

await flutterLocalNotificationsPlugin.initialize(
InitializationSettings(
android: AndroidInitializationSettings('background')
)
);

await flutterLocalNotificationsPlugin.show(
0,
message.notification?.title,
message.notification?.body,
NotificationDetails(
android: AndroidNotificationDetails(
'high_importance_channel',
'High Importance Notifications',
importance: Importance.high
)
)
);

if (message.notification?.title == 'Awards') {
await FirebaseMessaging.instance.unsubscribeFromTopic('current');
}
}

void main() async {
WidgetsFlutterBinding.ensureInitialized();

await Firebase.initializeApp();

await FirebaseAppCheck.instance.activate(
androidProvider: AndroidProvider.playIntegrity,
appleProvider: AppleProvider.appAttest
);

if (FirebaseAuth.instance.currentUser == null) {
await FirebaseAuth.instance.signInAnonymously();
}

final messaging = FirebaseMessaging.instance;

await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true
);

const AndroidNotificationChannel channel = AndroidNotificationChannel(
'high_importance_channel',
'High Importance Notifications',
description: 'This channel is used for important notifications.',
importance: Importance.high
);

final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation()?.createNotificationChannel(channel);

await flutterLocalNotificationsPlugin.initialize(
InitializationSettings(
android: AndroidInitializationSettings('background')
)
);

FirebaseMessaging.onBackgroundMessage(notificationHandler);
< /code>
Изменить: вот часть, где я подписываюсь на тему: < /p>
void _onCardEntryComplete() async {
await FirebaseMessaging.instance.subscribeToTopic('current');

if (mounted) Navigator.of(context).pushNamed('/register');
}
Этот фрагмент взят из функции для завершения поток записи карты (я использую пакет Flutter square_in_app_payments для обработки платежа). Как только приложение увидит, что платеж успешен, он подписывает пользователя на тему. Тем не менее, уведомления до сих пор не появляются, поэтому они ничего не изменили, но, по крайней мере, это одно исправлено. Я попытался изменить AndroidManifest.xml, проверить оптимизацию батареи и т. Д. Мне также интересно, отправляю сообщения неправильно от бэкэнда. И просто чтобы прояснить, когда я говорю, что «уведомление не проходит», я имею в виду, что на главном экране моего устройства, когда я отправляю уведомление, в подносе нет уведомления. Я не вижу никаких уведомлений в моей истории уведомлений. И, конечно, нет никакого звука или отображения.>

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

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

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

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

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

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

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