Трепещущая огненная база для обработки сообщений не работает

# #firebase #flutter #firebase-cloud-messaging

Вопрос:

Я пытаюсь отправить уведомление в приложение flutter для IOS. Мой основной цикл флаттера выглядит так:

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

  await Firebase.initializeApp();

  print(await FirebaseMessaging.instance.getToken());

  await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
    alert: true, // Required to display a heads up notification
    badge: true,
    sound: true,
  );

  runApp(MyApp());
}
 

И initState() MyApp() выглядит так:

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

    FirebaseMessaging messaging = FirebaseMessaging.instance;

    FirebaseMessaging.onMessage.listen((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}');
      }
    });
  }
 

Я не могу заставить работать ни один из потоков для работы с огнем. onMessage/onMessageOpenedApp/onBackgroundMessage() не будет работать, но если приложение закрыто, я могу отправлять уведомления. Но все равно ни в одном из вышеперечисленных потоков не будет никакого контента.

Я отправляю уведомления с помощью этого кода python:

 import firebase_admin
from firebase_admin import credentials
from firebase_admin import messaging

cred = credentials.Certificate("auth.json")
app = firebase_admin.initialize_app(cred)

topic = 'test'

apns_config = messaging.APNSConfig(
    payload=messaging.APNSPayload(
        messaging.Aps(
            mutable_content=False,
            sound=messaging.CriticalSound('default')
        )
    )
)

notification = messaging.Notification(
    title="FCM Message",
    body="This is a Firebase Cloud Messaging Topic Message!"
)

# See documentation on defining a message payload.
message = messaging.Message(
    data={
        'score': '850',
        'time': '2:45',
    },
    notification=notification,
    #topic=topic,
    token="token_of_device",
    apns=apns_config
)


response = messaging.send(message, app=app)

print('Successfully sent message:', response)
 

Есть ли способ решить эту проблему?
Заранее спасибо.

Комментарии:

1. если ваше приложение прекращено, вам нужно реализовать этот метод FirebaseMessaging.onMessageOpenedApp.listen((m){}); , android/ios обрабатывает уведомление самостоятельно, вам просто нужно реализовать onTap, и если вы находитесь в фоновом режиме, затем реализуйте это FirebaseMessaging.onBackgroundMessage в основной проверке.это для справки firebase.flutter. dev/документы/обмен сообщениями/использование

2. В этом-то и проблема. Эти методы не будут вызваны, даже если они должны быть вызваны.

3. вы выполнили собственные конфигурации( firebase.flutter.dev/документы/обмен сообщениями/интеграция с apple ) ? и если вы используете эмулятор ios, то вы не получите уведомления

4. да, я понял, что проблема, похоже, в звуке в точках обмена сообщениями скрипта python.