본문 바로가기

아카이브/Spring

[Spring] Fcm init

1. 초기 설정

Firebase -> 해당 프로젝트 -> 프로젝트 설정 -> 서비스 계정

비공개키를 resources/firebase에 넣고 위 예제 코드를 Application에 추가한다

@Bean
	public void run() throws Exception {
		try {
			FirebaseApp.getInstance();
		} catch (Exception e) {
			try {
				String path = System.getProperty("user.dir");

				FileInputStream serviceAccount = new FileInputStream(path
						+ "/src/main/resources/firebase/serviceAccountKey.json");

				FirebaseOptions options = new FirebaseOptions.Builder()
						.setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();

				FirebaseApp.initializeApp(options);
			} catch (Exception e1) {
			}
		}
	}

 

2. 전송 FcmUtil

import java.util.Arrays;
import java.util.List;

import com.google.firebase.messaging.BatchResponse;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.MulticastMessage;

import org.springframework.stereotype.Component;

@Component
public class FCMUtil {
    public void sendFCM(String TOKEN, String msg) {
        try {
            List<String> registrationTokens = Arrays.asList(
                    'YOUR_REGISTRATION_TOKEN_1',
                     // …
                    'YOUR_REGISTRATION_TOKEN_N',
			);

            MulticastMessage message = MulticastMessage.builder().putData("score", "850").putData("time", "2:45")
                    .addAllTokens(registrationTokens).build();

            BatchResponse response = FirebaseMessaging.getInstance().sendMulticast(message);
            System.out.println(response.getSuccessCount() + " messages were sent successfully");
        } 
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

위 fcm을 주마다 같은시간에 다수 사용자에게 보내야하기때문에 스레드를 이용해서 500명의 사용자씩 끊어 보낼 예정

 


https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko 

 

앱 서버 전송 요청 작성  |  Firebase

Firebase Admin SDK 또는 FCM 앱 서버 프로토콜을 사용하여 메시지 요청을 작성하고 다음과 같은 타겟 유형으로 전송할 수 있습니다. 주제 이름 조건 기기 등록 토큰 기기 그룹 이름(기존 프로토콜 및 N

firebase.google.com