Flutter Uygulamasında İlk Firebase Bildirimin Yanıt Vermiyor'a Neden Olması
7
●110
- 17-11-2024, 22:25:25Selamlar, Dart ile yazılan bir uygulamada firebase yapılandırmasının ardından ilk gelen mesaj bildirimi 2 dakikayı bulabiliyor. App yanıt vermiyor diyor fakat bekle dediğinde her şey sorunsuz devam edebiliyorsun ve diğer mesaj bildirimleri anlık, sorunsuz hatasız düşebiliyor. İlkine özel bir hata var. Bu konuda bilgisi olan, tecrübeli birisi var mıdır?
- 17-11-2024, 22:34:42Main fonksiyonuna eklediğiniz firebase bildirim için kod da bir sorun olmalı.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { // Arka planda gelen bildirimi işler print('Arka planda bildirim: ${message.messageId}'); } void main() async{ WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); // Arka plan bildirimleri işleme await FirebaseAppCheck.instance.activate( androidProvider:kDebugMode==true? AndroidProvider.debug:AndroidProvider.playIntegrity, ); SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp,DeviceOrientation.portraitDown]).then((value) { runApp( ChangeNotifierProvider.value( value: Iuserdataprovider(), child: MyApp(), )); },); await Subscriber.fetchOffers(); }benim main fonksiyonu bu şekil sorunsuz - 17-11-2024, 22:50:40Üyeliği durdurulduFirebase.initializeApp() çağrısının uygulama başlangıcında ve main() fonksiyonunda yaptınız mı?grknaks adlı üyeden alıntı: mesajı görüntüle
asenkron yöntemlerine baktınız mı?
şunu bi ekleyebilir misiniz?
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } - 17-11-2024, 23:08:09Theia adlı üyeden alıntı: mesajı görüntüle
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); // Firebase başlatma await Firebase.initializeApp( options: const FirebaseOptions( apiKey: 'X', appId: 'X', messagingSenderId: 'X', projectId: 'X', ), ); // Firebase Analytics'i devre dışı bırak await disableFirebaseAnalytics(); // Firebase Messaging ayarları await FirebaseMessaging.instance.setAutoInitEnabled(true); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); await AwesomeNotifications().initialize( 'resource://drawable/ic_notification', // Bildirim simgesi [ NotificationChannel( channelKey: 'basic_channel', channelGroupKey: 'basic_channel_group', channelName: 'Basic notifications', channelDescription: 'Notification channel for basic tests', defaultColor: Colors.black, ledColor: Colors.white, importance: NotificationImportance.High, channelShowBadge: true, icon: 'resource://drawable/ic_notification', // Simge kaynağı ), ], debug: true, ); await registerNotification(); runApp(MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => InAppServices()), ChangeNotifierProvider( create: (context) => ChatProvider(context.read<InAppServices>())), ], child: EasyLocalization( assetLoader: const CodegenLoader(), supportedLocales: const [Locale('tr', 'TR')], fallbackLocale: const Locale('tr', 'TR'), startLocale: const Locale('tr', 'TR'), path: 'assets/translations', child: const MyApp()), )); } Future<void> disableFirebaseAnalytics() async { FirebaseAnalytics analytics = FirebaseAnalytics.instance; await analytics.setAnalyticsCollectionEnabled(false); } Future<void> registerNotification() async { FirebaseMessaging messaging = FirebaseMessaging.instance; // Kullanıcıdan bildirim izinlerini isteme await messaging.requestPermission( alert: true, badge: true, provisional: false, criticalAlert: true, sound: true, ); FirebaseMessaging.onMessage.listen((RemoteMessage message) async { Future.delayed(Duration.zero, () async { try { if (message.notification != null) { await AwesomeNotifications().createNotification( content: NotificationContent( id: DateTime.now().millisecondsSinceEpoch ~/ 1000, channelKey: 'basic_channel', title: message.notification?.title ?? 'No Title', body: message.notification?.body ?? 'No Body', ), ); } } catch (e) { debugPrint('Notification Error: $e'); } }); }); await messaging.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, ); }Hali hazırda bu şekilde hocam ne yaptıysam yaramadı. - 17-11-2024, 23:15:49Üyeliği durduruldubu şekilde denermisin bi
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:awesome_notifications/awesome_notifications.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:your_app/in_app_services.dart'; import 'package:your_app/chat_provider.dart'; import 'package:your_app/my_app.dart'; Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print('Arka planda gelen mesaj: ${message.notification?.title}'); } Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Future.wait([ Firebase.initializeApp( options: const FirebaseOptions( apiKey: 'X', appId: 'X', messagingSenderId: 'X', projectId: 'X', ), ), EasyLocalization.ensureInitialized(), ]); FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(false); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); await FirebaseMessaging.instance.setAutoInitEnabled(true); await AwesomeNotifications().initialize( 'resource://drawable/ic_notification', // Bildirim simgesi [ NotificationChannel( channelKey: 'basic_channel', channelGroupKey: 'basic_channel_group', channelName: 'Basic notifications', channelDescription: 'Notification channel for basic tests', defaultColor: Colors.black, ledColor: Colors.white, importance: NotificationImportance.High, channelShowBadge: true, icon: 'resource://drawable/ic_notification', // Simge kaynağı ), ], debug: true, ); await registerNotification(); runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => InAppServices()), ChangeNotifierProvider( create: (context) => ChatProvider(context.read<InAppServices>())), ], child: EasyLocalization( assetLoader: const CodegenLoader(), supportedLocales: const [Locale('tr', 'TR')], fallbackLocale: const Locale('tr', 'TR'), startLocale: const Locale('tr', 'TR'), path: 'assets/translations', child: const MyApp(), ), ), ); } Future<void> registerNotification() async { FirebaseMessaging messaging = FirebaseMessaging.instance; // Kullanıcıdan bildirim izinlerini isteme NotificationSettings settings = await messaging.requestPermission( alert: true, badge: true, provisional: false, criticalAlert: true, sound: true, ); print('Bildirim izin durumu: ${settings.authorizationStatus}'); // Ön plan mesajları için yapılandırma FirebaseMessaging.onMessage.listen((RemoteMessage message) async { try { if (message.notification != null) { await AwesomeNotifications().createNotification( content: NotificationContent( id: DateTime.now().millisecondsSinceEpoch ~/ 1000, channelKey: 'basic_channel', title: message.notification?.title ?? 'No Title', body: message.notification?.body ?? 'No Body', ), ); } } catch (e) { debugPrint('Bildirim hatası: $e'); } }); await messaging.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, ); } - 17-11-2024, 23:25:36İlk bildirim 2 dakika sonra geliyor ve ardından yanıt vermiyor diyor. Yine aynı bekle dediğimde diğer chat mesajlrı anlık düşmeye başlıyor sorunsuz bir şekilde. Hata devam ediyor.Theia adlı üyeden alıntı: mesajı görüntüle
Çıktı:
D/FLTFireMsgReceiver(20150): broadcast received for message W/MIUIScout ANR(20150): AnrScout only want msg within 20s, so stop here D/MIUIScout ANR(20150): get period history msg: (Current message: duration=25ms seq=179 binder=70420ms h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0) D/MIUIScout ANR(20150): get period history msg:execute time>50ms (msgIndex=1seq=176 plan=23:24:27.713 late=1ms wall=75ms running=17ms runnable=1ms binder=2ms h=android.app.ActivityThread$H w=113) D/MIUIScout ANR(20150): get period history msg:In recent 20s, total historyMsgCount=3 D/CompatibilityChangeReporter(20150): Compat change id reported: 160794467; UID 10608; state: ENABLED D/Android: [Awesome Notifications](20150): Notification created and displayed in 90ms (NotificationSender:202) I/.ftbk.flirtboo(20150): Thread[5,tid=20185,WaitingInMainSignalCatcherLoop,Thread*=0xb400006ffa5a5c00,peer=0x13e40270,"Signal Catcher"]: reacting to signal 3 I/.ftbk.flirtboo(20150): I/.ftbk.flirtboo(20150): Wrote stack traces to tombstoned F/crash_dump64(21237): crash_dump.cpp:509] failed to attach to thread 720: Permission denied
- 17-11-2024, 23:34:28Üyeliği durdurulduFirebase başlatmayı arkaplana alabilir misin?grknaks adlı üyeden alıntı: mesajı görüntüle
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(MyApp()); // Uygulamayı hızlıca başlat await Future.delayed(Duration.zero, () async { await initializeFirebaseAndServices(); // Firebase ve diğer ağır işlemleri arka planda başlat }); } Future<void> initializeFirebaseAndServices() async { await Firebase.initializeApp(); await registerNotification(); }Bir de test bildirimi gönderirken hep aynı id ye bazen geciktiriyor silip tekrar kurulum yap token id değişsin o şekilde dene