728x90
반응형
SMALL
firebase cloud message package 다운로드
[https://pub.dev/packages/firebase_messaging](https://pub.dev/packages/firebase_messaging)
[project]/android/build.gradle 수정
dependencies {
// Example existing classpath
classpath 'com.android.tools.build:gradle:3.5.3'
// Add the google services classpath
classpath 'com.google.gms:google-services:4.3.2'
}
[project]/android/app/build.gradle 수정
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
android/app/src/main/AndroidManifest.xml 수정
<application>
...
<activity>
...
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
FirebaseMessaging 객체 생성
final FirebaseMessaging _fcm = FirebaseMessaging();
initState() 함수 안에 fcm 수신 함수 설정
_fcm.configure(
// 앱이 실행중일 경우
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
},
// 앱이 완전히 종료된 경우
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
},
// 앱이 닫혀있었으나 백그라운드로 동작중인 경우
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
},
);
수신 테스트
https://console.firebase.google.com/project/[자신의 firebase 프로젝트명]/notification?hl=ko
- 테스트 메세지 전송 시 테스트기기의 token 값이 필요
- 메세지 등록 하고 다음 버튼을 계속 클릭 하고 검토 버튼 클릭 후 게시를 클릭하면 발송됨.
백그라운드에서 메시지를 처리하려면:
/android/app/build.gradle 수정
dependencies {
// ...
implementation 'com.google.firebase:firebase-messaging:<latest_version>'
}
Application.java 클래스를 MainActivity.java와 동일한 디렉토리의 앱에 추가.
일반적으로 <app-name>/android/app/src/main/java/<app-organization-path>/에서
확인할 수 있다.
package io.flutter.plugins.firebasemessagingexample;
import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
public class Application extends FlutterApplication implements PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
@Override
public void registerWith(PluginRegistry registry) {
GeneratedPluginRegistrant.registerWith(registry);
}
}
AndroidManifest.xml에서 응용 프로그램의 이름 속성을 설정
이는 일반적으로 <app-name>/android/app/src/main/에서 확인할 수 있다.
<application android:name=".Application" ...>
dart 파일에 백그라운드 메세지를 처리하는 기능 정의
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
if (message.containsKey('data')) {
// Handle data message
final dynamic data = message['data'];
}
if (message.containsKey('notification')) {
// Handle notification message
final dynamic notification = message['notification'];
}
// Or do other work.
}
메세지 수신을 처리하는 함수 수정 : onBackgroundMessage 프로퍼티 추가
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
_showItemDialog(message);
},
**onBackgroundMessage: myBackgroundMessageHandler,**
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
_navigateToItemDetail(message);
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
_navigateToItemDetail(message);
},
);
728x90
반응형
LIST
'Program > Flutter' 카테고리의 다른 글
flutter build apk (0) | 2020.08.11 |
---|---|
Flutter Splash Screen 적용 (0) | 2020.08.07 |
Mac Flutter 개발 환경 (0) | 2020.07.15 |
Dart 기본 문법 (0) | 2020.07.08 |
Flutter Card Widget Sample (0) | 2019.10.02 |