# #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.