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
'아카이브 > Spring' 카테고리의 다른 글
[Spring] REST API 부하 테스트 (0) | 2021.07.19 |
---|---|
[유틸] RestAPI model,dto,controller 파일 자동 생성(Mybatis) (0) | 2021.05.27 |