Skip to content

Commit

Permalink
feat: fcm connection
Browse files Browse the repository at this point in the history
  • Loading branch information
seoyeon0201 committed Sep 24, 2023
1 parent e44f7d3 commit e713e0d
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 84 deletions.
6 changes: 2 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,8 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

//firebase fcm 라이브러리
implementation 'com.google.firebase:firebase-admin:6.8.1'
//objectMapper
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'
//firebase fcm 라이브러리 / sdk
implementation 'com.google.firebase:firebase-admin:9.2.0'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.seulseul.seulseul.controller.firbase;//package com.seulseul.seulseul.controller.firbase;

import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingException;
import com.google.firebase.messaging.Message;
import com.seulseul.seulseul.dto.Response.ResponseData;
//import com.seulseul.seulseul.dto.firebase.RequestDTO;
import com.seulseul.seulseul.dto.firebase.FCMDto;
import com.seulseul.seulseul.entity.TokenKey;
import com.seulseul.seulseul.entity.baseRoute.BaseRoute;
import com.seulseul.seulseul.entity.user.User;
import com.seulseul.seulseul.service.baseRoute.BaseRouteService;
Expand All @@ -14,14 +18,14 @@
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.Optional;
import java.util.UUID;

@RestController
@RequiredArgsConstructor
public class FcmController {
private final BaseRouteService baseRouteService;
private final UserService userService;
private final TokenKey tokenKey;

@PostMapping("/v1/fcm/check")
public ResponseEntity<ResponseData> findTransfer(@RequestHeader("Auth") UUID uuid, @RequestBody FCMDto fcmDto) throws IOException {
Expand All @@ -33,18 +37,41 @@ public ResponseEntity<ResponseData> findTransfer(@RequestHeader("Auth") UUID uui
return new ResponseEntity<>(responseData, HttpStatus.OK);
}

// private final FirebaseCloudMessageService firebaseCloudMessageService;
//
// @PostMapping("/api/fcm")
// public ResponseEntity pushMessage(@RequestBody RequestDTO requestDTO) throws IOException {
// System.out.println(requestDTO.getTargetToken() + " "
// + requestDTO.getTitle() + " " + requestDTO.getBody());
//
// firebaseCloudMessageService.sendMessageTo(
// requestDTO.getTargetToken(),
// requestDTO.getTitle(),
// requestDTO.getBody());
// return ResponseEntity.ok().build();
// }
@RequestMapping("/send/token")
public String sendToToken(@RequestHeader("Auth") UUID uuid) throws FirebaseMessagingException {

User user = userService.getUserByUuid(uuid);
BaseRoute baseRoute = baseRouteService.findByUser(user);
String pos = baseRoute.getFirstStation();
Long original = baseRoute.getAlarm().getAlarmTime();
String alarmTime = "";

if (original >= 60) {
if (original%60 == 0) {
alarmTime = original/60 +"시간 " + "00분";
} else {
alarmTime = original/60 +"시간 " + original%60 + "분";
}
} else {
alarmTime = original + "분";
}

String body = "마지막 위치 "+ pos + "역을 기준으로 "+ alarmTime +" 뒤에 막차가 끊깁니다!";


// See documentation on defining a message payload.
Message message = Message.builder()
.putData("title", "SeulSeul")
.putData("body", body)
.setToken(tokenKey.getToken())
.build();

// Send a message to the device corresponding to the provided
// registration token.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.

return body;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.seulseul.seulseul.controller.firbase;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;

import java.io.File;
import java.io.FileInputStream;

@Configuration
public class FirebaseConfig {
@Value("classpath:firebase/service-account.json")
private File file;

@PostConstruct
public void initFirebase() {
try {
// Service Account를 이용하여 Fireabse Admin SDK 초기화
FileInputStream serviceAccount = new FileInputStream(file);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();
FirebaseApp.initializeApp(options);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/seulseul/seulseul/entity/ApiKey.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

;


@Component
@RequiredArgsConstructor
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/com/seulseul/seulseul/entity/TokenKey.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.seulseul.seulseul.entity;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
@Getter
@PropertySource(value = "classpath:application-token.properties")
public class TokenKey {
@Value("${token}")
private String token;
}

This file was deleted.

0 comments on commit e713e0d

Please sign in to comment.