Kotlin

    [FCM] FirebaseCloudMessaging API 만들기

    [FCM] FirebaseCloudMessaging API 만들기

    이번엔 메시지 API를 만들어서 Postman을 통해 토큰과 타이틀, 바디를 보내 폰으로 알림을 받는 과정을 정리해보려 합니다. Firebase프로젝트를 생성하는 과정은 이전 게시글을 참고하시면 됩니다. [FCM]Firebase Cloud Messaging 수신하기 Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보 huzit.tistory.com 시작하기 전 어느 정도 배웠던 기억을 살려서 구현한 거라 최신 빌드에 맞지 않을 수 있습니다. 참고 정도로만 보시는 걸 추천드려요. Springboot 프로젝트 생성 프로젝트를 생성할 때..

    [FCM]Firebase Cloud Messaging 수신하기

    [FCM]Firebase Cloud Messaging 수신하기

    Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니 firebase.google.com 정상적인 서비스를 위한 과정이 아닌 단순히 FCM에서 테스트 메시지 보내기를 통해 어플에서 알림을 수신하는 과정을 담고 있습니다. 프로젝트 생성 프로젝트를 Empty Activity로 하나 만듭니다. 프로젝트 생성 이후 해야 할 것은 3가지입니다. SDK 설정 앱 매니페스트 수정 장치 등록 토큰에 액세스 프로젝트 설정 1. SDK설정 Android 프로젝트에 Firebase..

    [docker]kotlin + SpringBoot를 Docker Hub에 올리기(feat.FCM)

    [docker]kotlin + SpringBoot를 Docker Hub에 올리기(feat.FCM)

    1. 스프링 부트 프로젝트 만들기 빌드 툴은 gradle이므로 build.gradle.kts에 spring-boot-starter-web 의존성을 추가하고 테스트할 수 있는 맵핑을 하나 만들어주면 됩니다. @RestController @RequiredArgsConstructor class NotificationController { @Autowired val firebaseService = FirebaseService() @Autowired val fCMService = FCMService() @Throws(IOException::class) @PostMapping("/sendNotification") fun sendNotification(@RequestBody requestDTO: RequestDTO)..

    스코프 함수

    스코프 함수

    스코프란? 번역하면 '범위'입니다. 프로그래밍에서 범위를 표시하고 있는 것의 대표적인 예가 중괄호입니다. 그렇다면 중괄호 안에서 범위에 제한되는 것은 어떤 게 있을까? 대표적으로 변수가 있습니다. 이를 종합해보면 컴퓨터 프로그래밍에선 스코프를 변수 영역이라고 부르는 것을 알 수 있습니다. 그런데 range나 extent, area 등과 같은 범위를 나타내는 영어는 많은데 왜 하필 scope일까? 스코프의 어원은 그리스 어로 '겨누는 곳' 따라서 변수를 겨누는 범위를 나타내야 하므로 scope를 사용했다고 볼 수 있습니다. 스코프(변수 영역)의 종류 전역 소스 코드 상의 모든 곳에서 사용할 수 있는 변수 영역입니다. 예시로 전역변수가 있습니다. 함수 영역 함수 내에서만 유효한 변수영역입니다. 대부분의 프로..

    16. 코루틴 기본

    16. 코루틴 기본

    정의 코루틴(coroutine)은 co(cooperation) + routine의 합성어이다. 멜빈 콘웨이가 1958년에 만들어 냈으며 당시 어셈블리 프로그램에 적용했다. 코루틴은 협동루틴, 상호 연계 프로그램이라고 표현할 수 있다. 루틴과 서브 루틴은 서로 비대칭적인 관계이지만, 코루인은 완전히 대칭적인, 서로가 서로를 호출하는 관계이다. 코틀린 공식문서에선 다음과 같이 말한다. 코루틴은 일시 중단 가능한 계산 인스턴스입니다. 코드의 나머지 부분과 동시에 작동하는 코드 블록을 실행한다는 점에서 개념적으로 스레드와 유사합니다. 그러나 코루틴은 특정 스레드에 바인딩 되지 않습니다. 한 스레드에서 실행을 일시 중지하고 다른 스레드에서 다시 시작할 수 있습니다. 코루틴을 경량 스레드로 생각할 수 있지만 실제 ..

    15. 인라인 함수

    15. 인라인 함수

    정의 일반적으로 함수는 선언 -> 호출 -> 작동의 과정을 거친다. 인라인 함수는 일반 함수와 다르게 호출을 하면 선언된 위치로 가서 작동하지 않고 선언한 내용을 호출한 위치에 치환한다. 코드를 보면 이해하기 쉽다. fun main() { println(add(1, 2)) println(min(2, 1)) } fun add(i: Int , b: Int): Int { return i+b } inline fun min(i: Int, j: Int): Int{ return i-j } -result- 3 1 min()은 인라인, add()는 일반 함수로 생성했다. 결과를 보면 큰 차이가 없을 것이다. 하지만 자바로 디컴파일 하게 되면 컴파일러가 어떻게 처리하는지 알 수 있다. public final class M..

    베스트 앨범

    베스트 앨범

    문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres [i]는 고유번호가 i인 노래의 장르입니다. plays [i]는 고유번호가 i인 노래가 재생된 횟수..

    카펫

    카펫

    문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로길이는 세로 길이와 같거나, 세로 길이보다 깁..