Firebase Cloude Message(이하 FCM)을 구현하여 Web 및 App Device에 Push Message를 보내는 기능을 구현해봅니다. FCM 구현에는 송수신을 위한 두 가지 주요 구성요소가 필요합니다.
- Firebase용 Cloud Functions 또는 앱 서버와 같이 메시지를 작성, 타겟팅, 전송할 수 있는 신뢰할 수 있는 환경
- 해당 플랫폼별 전송 서비스를 통해 메시지를 수신하는 Apple, Android 또는 웹(자바스크립트) 클라이언트 앱
1. Firebase Admin SDK 의존성 추가하기
- Firebase Admin SDK를 사용하기 위해서는 해당 서버에 Java 8 이상이 설치되어 있어야 합니다.
// Gradle - build.gradle
dependencies {
implementation 'com.google.firebase:firebase-admin:9.0.0'
}
// Maven - pom.xml
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.0.0</version>
</dependency>
2. SDK 승인 및 Firebase 객체 초기화하여 생성하기
- 보안을 위한 key를 생성한다고 생각하면 되는데, firebase의 경우 key - value 형태의 Json 파일로 되어있고, 이 파일을 만들어서 자신의 project 폴더에 위치시켜야 합니다. 비공개 키 파일을 생성하는 방법은 아래와 같습니다.
- Firebase Console에서 설정 > 서비스 계정을 엽니다.
- 새 비공개 키 생성을 클릭한 다음 키 생성을 클릭하여 확인합니다.
- 키가 들어 있는 JSON 파일을 안전하게 저장합니다.
- 설정이 완료되었으면 SDK를 위에서 생성한 json 키로 승인 해 줍니다.
private static FirebaseApp getFirebaseApp() throws IOException {
FileInputStream fis = new FileInputStream(privateKeyPath);
FirebaseOptions fbOptions = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(fis))
.build();
fbApp = FirebaseApp.initializeApp(fbOptions, key);
return fbApp;
}
3. FCM 전송하기
- 위에서 생성한 FirebaseApp 객체를 사용하여 메세지를 전송하는 방법은 아래와 같습니다.
// 규격에 맞게 메세지 작성하기
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.build();
// 보내기
String sendResult = FirebaseMessaging.getInstance(fbApp).send(message);
// 결과 출력
System.out.println("FCM sent message: " + sendResult);
- 전송에 성공하면 Firebase Admin SDK가 projects/{project_id}/messages/{message_id} 형식으로 ID 문자열을 반환합니다.
{
"name":"projects/myproject-b5ae1/messages/0:1500415314455276%31bd1c9631bd1c96"
}
'Language > Java' 카테고리의 다른 글
Java로 Builder Program 만들기 (2) - Java로 Shell Script를 Controller하여 Docker로 Source Build하기 (0) | 2022.12.28 |
---|---|
Java로 Builder Program 만들기 (1) - Java JGit Library 사용해서 Git Controller하기 (0) | 2022.12.27 |
Java로 Data 암호화 및 복호화 하기 - AES256 (0) | 2022.06.27 |
Java로 Apache Kafka Consumer 구독 구현하기 (0) | 2022.06.20 |
[Gradle] Gradle로 Java Application 생성 및 실행하기 (0) | 2022.06.08 |