Float에서 최신 버전으로 Firebase Messaging을 구성하는 방법은 무엇입니까?
Floatter 알림 구성을 위해 Firebase 메시징 구성에 아래 코드를 사용하고 있었지만, 최신 버전의 Firebase 메시징에 통합한 후 오류가 발생합니다.
코드 라인
messaging.configure(onMessage: (Map<String, dynamic> message){}
DART 분석 오류
error: The method 'configure' isn't defined for the type 'FirebaseMessaging'.
FirebaseMessaging.configure()가 Firebase 팀에 의해 제거되었습니다. per https://firebase.flutter.dev/docs/migration/#messaging —
이유: 의 이전 구현
configure()다른 핸들러를 등록하거나 핸들러를 제거하기 위해 여러 번 호출할 경우 의도하지 않은 부작용이 발생합니다.이러한 변경을 통해 개발자가 스트림을 통해 다른 사용자에게 영향을 주지 않고 핸들러를 등록하고 핸들러를 제거하는 것에 대해 보다 명확하게 설명할 수 있습니다.
사용하다FirebaseMessaging.onMessage 메시지를 받는 방법
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
RemoteNotification notification = message.notification;
AndroidNotification android = message.notification?.android;
});
사용하다FirebaseMessaging.onMessageOpenedApp을 대신하여onLaunch그리고.onResume핸들러:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('A new onMessageOpenedApp event was published!');
Navigator.pushNamed(context, '/message',
arguments: MessageArguments(message, true));
});
아래의 예를 확인해주시기 바랍니다.
@override
void initState() {
super.initState();
FirebaseMessaging.instance
.getInitialMessage()
.then((RemoteMessage message) {
if (message != null) {
Navigator.pushNamed(context, '/message',
arguments: MessageArguments(message, true));
}
});
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
RemoteNotification notification = message.notification;
AndroidNotification android = message.notification?.android;
if (notification != null && android != null) {
flutterLocalNotificationsPlugin.show(
notification.hashCode,
notification.title,
notification.body,
NotificationDetails(
android: AndroidNotificationDetails(
channel.id,
channel.name,
channel.description,
// TODO add a proper drawable resource to android, for now using
// one that already exists in example app.
icon: 'launch_background',
),
));
}
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('A new onMessageOpenedApp event was published!');
Navigator.pushNamed(context, '/message',
arguments: MessageArguments(message, true));
});
}
Jitesh의 답변을 기반으로, 내가 구현하기 위해.getInitialMessage앱이 종료될 때 내비게이션이 작동하도록 하는 데 필요합니다(런칭 시 대체).
// workaround for onLaunch: When the app is completely closed (not in the background) and opened directly from the push notification
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage message) {
print('getInitialMessage data: ${message.data}');
_serialiseAndNavigate(message);
});
// onMessage: When the app is open and it receives a push notification
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("onMessage data: ${message.data}");
});
// replacement for onResume: When the app is in the background and opened directly from the push notification.
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('onMessageOpenedApp data: ${message.data}');
_serialiseAndNavigate(message);
});
업데이트된 항목:
Firebase Messaging Service는 앱 시작 시 중요합니다.이러한 이유로 다음을 수행해야 합니다.이 함수를 먼저 선언합니다.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
debugPrint("Firebase Messaging firebase is initialized");
await Firebase.initializeApp();
}
그리고 앱의 메인(){}에서 이 함수를 호출합니다.
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
그러면 다음 기능을 사용할 수 있습니다.
메시지를 가져오는 FirebaseMessaging.onMessage 메서드
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
RemoteNotification notification = message.notification;
AndroidNotification android = message.notification?.android;
});
FirebaseMessaging.onMessageOpenedApp을 onLaunch 및 onResume 핸들러의 대체품으로 사용합니다.
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('A new onMessageOpenedApp event was published!');
Navigator.pushNamed(context, '/message',
arguments: MessageArguments(message, true));
});
이벤트 처리:
이벤트 처리는 개발자에게 보다 직관적인 API를 제공하기 위해 수정되었습니다.이제 스트림을 통해 포그라운드 기반 이벤트에 액세스할 수 있습니다.
Flutter 인스턴스가 포그라운드에 있는 동안 수신 FCM 페이로드가 수신되면 [RemoteMessage]를 포함하는 스트림을 반환합니다.
FirebaseMessaging.onMessageOpenedApp 사용자가 FCM을 통해 표시되는 알림을 누를 때 호출되는 [Stream]을 반환합니다.이전 onLaunch 및 resume 핸들러를 대체합니다.
FirebaseMessaging.onBackgroundMessage() 앱이 백그라운드에 있거나 종료될 때 트리거할 백그라운드 메시지 처리기를 설정합니다.IOS 알림 설정:
언급URL : https://stackoverflow.com/questions/65056272/how-to-configure-firebase-messaging-with-latest-version-in-flutter
'programing' 카테고리의 다른 글
| 스케줄링된 작업 만들기 (0) | 2023.06.18 |
|---|---|
| 새 줄 서식을 Mac에서 Windows로 변환 (0) | 2023.06.18 |
| R 산점도에서 점의 크기를 제어하시겠습니까? (0) | 2023.06.18 |
| 변수 쌓기 대힙 변수 (0) | 2023.06.18 |
| 트리거를 사용하지 않고 Oracle 자동 증가 (0) | 2023.06.18 |