Size: a a a

Dart & Flutter по-русски

2021 July 27

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Привет!
В main.dart определи следующее:

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
 // If you're going to use other Firebase services in the background, such as Firestore,
 // make sure you call `initializeApp` before using other Firebase services.
 await Firebase.initializeApp();

 print("Handling a background message: ${message.messageId}");
}

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

 await Firebase.initializeApp();
 FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

// other code
}
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Либо настройки iOS проекта не сделал
источник

i

ilx13 in Dart & Flutter по-русски
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
 override func application(
   _ application: UIApplication,
   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
 ) -> Bool {
   if #available(iOS 10.0, *) {
     UNUserNotificationCenter.current().delegate = self
     let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
     UNUserNotificationCenter.current().requestAuthorization(
       options: authOptions,
       completionHandler: {_, _ in })
   } else {
     let settings: UIUserNotificationSettings =
     UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
     application.registerUserNotificationSettings(settings)
   }
   application.registerForRemoteNotifications()
   FirebaseApp.configure()
   GeneratedPluginRegistrant.register(with: self)
   return super.application(application, didFinishLaunchingWithOptions: launchOptions)
 }
}
источник

i

ilx13 in Dart & Flutter по-русски
такой у меня
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Это AppDelegate, а тебе нужно в настройках проекта включить background refresh (кажется) и remote messages
источник

i

ilx13 in Dart & Flutter по-русски
ааа, эти две включил. мне пуши приходят
источник

i

ilx13 in Dart & Flutter по-русски
не удается поймать событие.
источник

i

ilx13 in Dart & Flutter по-русски
например при получении пуша на андроиде у меня срабатывает:
FirebaseMessaging.onMessage.listen((RemoteMessage message) async {тут делаю некоторые задачи}
этот же метод не работает на ios.
источник

i

ilx13 in Dart & Flutter по-русски
пуш просто приходит.
источник

i

ilx13 in Dart & Flutter по-русски
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
У меня в виджете с сообщениями в initState следующее:

FirebaseMessaging.onMessage.listen((RemoteMessage message) => showMessage(message: message));
   FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) => showMessage(message: message));
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
void showMessage({required RemoteMessage message}) {
   print('Got a message whilst in the foreground!');
   print('Message data: ${message.data}');

   if (message.notification != null) {
     print('Message also contained a notification: ${message.notification!.body}');
     showNewMessageAlert(context: context);
   }
 }
источник

i

ilx13 in Dart & Flutter по-русски
и это работает? на ios и на андроиде?
источник

i

ilx13 in Dart & Flutter по-русски
у меня точно так
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Да
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Работает
источник

i

ilx13 in Dart & Flutter по-русски
хорошо спасибо. с этим позже разберусь.
у вас приходит пуш если приложение запущено?
источник

i

ilx13 in Dart & Flutter по-русски
мой приходит только когда закрыто или свернуто. мне нужно чтобы при включенным тоже пришел пуш
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Да
источник

AK

Aleksey Kharitonov in Dart & Flutter по-русски
Как раз этот метод и выполняется при новом уведомлении если приложение запущено: showNewMessageAlert(context: context);
источник