Firebase Messaging verursacht ANR beim Empfang einer Benachrichtigung in der Flutter-App (auch mit minimalem Handler)Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Firebase Messaging verursacht ANR beim Empfang einer Benachrichtigung in der Flutter-App (auch mit minimalem Handler)

Post by Anonymous »

Ich arbeite an einem Flutter-Projekt, bei dem ich Benachrichtigungen mithilfe von Firebase Messaging eingerichtet habe. Bis vor kurzem hat alles perfekt funktioniert. Nachdem ich nach langer Zeit zum Projekt zurückgekehrt bin und den Code erneut ausgeführt habe, stürzt die App mit einem ANR (Application Not Responding) ab, wenn eine Benachrichtigung empfangen wird.
Die Benachrichtigung wird empfangen und der Vordergrundhandler ruft die Daten ab, aber dann stürzt die App sofort ab.
Nach dem Debuggen wurde mir klar, dass die Verarbeitung nach dem Empfang der Benachrichtigung lange dauert, was wahrscheinlich den Absturz verursacht.
Zur Untersuchung Außerdem habe ich alle schweren Aufgaben entfernt und nur ein einfaches Druckprotokoll im Handler belassen – aber der Absturz tritt immer noch auf.
Hier ist die Fehlermeldung, die angezeigt wird, wenn die App abstürzt:

Code: Select all

ANR in com.company
PID: 24618
Reason: Broadcast of Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=com.company cmp=com.company/uk.orth.push.FirebaseMessagingReceiver (has extras) }
ErrorId: f29624e4-05d6-4b28-960f-81a2550b55eb
Frozen: false
Load: 3.89 / 3.9 / 3.99
Weitere Speicher- und CPU-Statistiken folgen, die auf eine Systemauslastung hinzudeuten scheinen, aber ich mache im Handler nichts Intensives mehr. Der Absturz geht jedoch weiter.
Jetzt stecke ich fest und weiß nicht, was ich als nächstes tun soll.
Wenn jemand ein ähnliches Problem hat oder weiß, was die Ursache dafür sein könnte, helfen Sie mir bitte, es zu beheben.
Hier ist der Code, der den Fehler verursacht (der tatsächliche Code ist anders, aber für diesen Code funktioniert er nicht)

Code: Select all

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';

// This is the background message handler. This should be run on a background isolate.
Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
print("Handling a background message: ${message.messageId}");

// Perform background processing here, but ensure no UI updates happen here.
// You can log data, fetch data, or update your database.
}

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();

// Register the background message handler
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

runApp(MyApp());
}

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;

@override
void initState() {
super.initState();

// Request notification permissions for iOS
_firebaseMessaging.requestPermission();

// Handle foreground messages
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("Received message while the app is in the foreground: ${message.messageId}");

// Handle foreground notification here (e.g., show a dialog, update UI)
if (message.notification != null) {
print("Notification title: ${message.notification!.title}");
print("Notification body: ${message.notification!.body}");
}
});

// Handle message when the app is resumed from background (user taps on notification)
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print("Message clicked! Opening app...");
// Perform navigation or specific actions on notification tap
});

// Get the FCM token (to register the device for notifications)
_firebaseMessaging.getToken().then((String? token) {
print("FCM Token: $token");
});
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter FCM Demo',
home: Scaffold(
appBar: AppBar(
title: Text("Flutter FCM Demo"),
),
body: Center(child: Text("Push Notification Example")),
),
);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post