Navigation 앱 내의 화면을 들어갔다 나올 수 있게 플로우를 정한다. 일반적으로 화면을 전환할 수 있는 하단바를 의미함. Navigation 구성요소 Navigation Graph: 모든 Navigation 관련 정보가 한 곳에 모여있는 xml 파일. 사용자가 앱에서 갈 수 있는 모든 경로를 보여준다. NavHost: Navigation Graph에서 화면을 표시하는 빈 컨테이너. NavController: NavHost에서 앱 Navigation을 관리하는 객체. 사용자가 앱 내에서 화면을 이동할 때 NavHost에서 화면 전환을 controll하는 역할. Navigation Graph에서 어떤 경로로 이동할지 NavController에게 전달하고, NavController는 NavHost에게 ..
우테코 프리코스를 하다보니 테스트 코드를 작성할 일이 자주 생겼다. 오랜만에 작성해보니까 헷갈려서.. 자주 쓰이는 어노테이션과 함수들을 정리해보려고 한다. Junit 자바를 위한 단위 테스트 라이브러리. Junit 어노테이션 @Test 함수 위에 선언해 테스트 함수임을 지정 @Test(timeout=밀리초) 테스트 함수의 수행 시간을 제한 테스트할 함수가 수행되는 시간이 어노테이션 매개변수로 지정한 시간을 넘긴다면 fail @Test(expected=예외) 테스트할 함수의 예외를 지정 매개변수로 지정한 예외가 발생해야 테스트 pass @Ignore 해당 어노테이션이 선언된 테스트 함수는 무시하도록 지정 @BeforeEach 해당 어노테이션이 선언된 함수는 모든 @Test 함수가 실행되기 전에 실행된다. ..
자바와 코틀린을 둘다 사용하고 있어서, 코틀린에 대한 어려움은 없지만..코딩 테스트에서만 자주 쓰이는 컬렉션 다루는 함수들이나 입출력 관련 함수들은 아직 익숙치 않은 것 같다.안드로이드 직무는 코딩 테스트 언어를 코틀린으로만 제한하는 경우가 종종 있어서, 이번 기회에 코테 준비를 위한 코틀린 함수를 정리해보려 한다! 입력fun main() = with(System.'in'.bufferedReader()) { // Int 읽기 val integer = readLine().toInt() // 입력된 String을 공백 기준으로 나눈 후 Int로 변환 val nums = readLine().split(" ").map { it.toInt() }}자바처럼 속도를 개선하기 위해 Sc..
https://thdbs523.tistory.com/378 [안드로이드/코틀린] FCM를 이용하여 사용자 별로 Notification 보내기-1 FCM FCM는 Firebase Cloud Messaging의 약자로, 구글 클라우드 서버를 이용해서 사용자들에게 메시지를 보낼 수 있다. FCM에서는 디바이스 별로 Token을 부여하는데, 이 Token을 사용해서 특정한 사용자에게 thdbs523.tistory.com 위 포스팅에서 생성한 토큰을 가지고 디바이스 별로 메시지를 전송하는 방법은 아래와 같은 방법들이 있다고 했다. 1. Firebase Console에서 메시지를 전송하기 2. Postman으로 Firebase 서버에 POST 요청을 보내기 3. 안드로이드 상에서 Retrofit을 사용해 Fireb..
FCM FCM는 Firebase Cloud Messaging의 약자로, 구글 클라우드 서버를 이용해서 사용자들에게 메시지를 보낼 수 있다. FCM에서는 디바이스 별로 Token을 부여하는데, 이 Token을 사용해서 특정한 사용자에게 메시지를 보내는 것이다. FCM를 통해서 메시지를 전송하는 흐름은 위 그림과 같다. 1. 사용자가 앱에 처음 접속할 때 Firebase에서 토큰을 발급해준다. 2. 앱에서는 이 토큰을 서버에 저장한다. 3. 서버에서는 저장된 토큰을 이용해 Firebase 서버에 POST 요청을 보낸다. 4. POST 요청을 받은 Firebase서버는 해당하는 토큰을 가지는 디바이스에게 메시지를 보낸다. 먼저 토큰을 Firebase 서버에서 받아오는 방법을 알아보자. 1. Firebase에 ..
https://thdbs523.tistory.com/376 [안드로이드/코틀린] Retrofit2 라이브러리로 JSON 데이터 다루기 (GET, POST) Retrofit Retrofit2는 HTTP 통신을 도와주는 라이브러리다. GET, POST, PUT, DELETED 등을 전달하면 서버에서 처리 후 여러 형태의 데이터로 응답을 제공받을 수 있다. 비슷한 역할을 하는 HttpURLConnection 이나 A thdbs523.tistory.com Retrofit2에 대한 기본 개념과 구현 기초 셋팅, GET/POST 구현 방법은 위 포스팅에서 설명했다. 이번에는 PUT/DELETE 함수를 구현하는 방법에 대해 알아보자. 저번 포스팅과 동일하게 JSON 데이터는 아래 url을 활용한다. https://j..
Retrofit2 Retrofit2는 HTTP 통신을 도와주는 라이브러리다. GET, POST, PUT, DELETED 등을 전달하면 서버에서 처리 후 여러 형태의 데이터로 응답을 제공받을 수 있다. 비슷한 역할을 하는 HttpURLConnection 이나 AsyncTask, Volley 라이브러리들은 deprecated 되었고, 사용하기 복잡하기 때문에 현재 Retrofit이 가장 보편적으로 쓰이고 있다. 또한 Retrofit2는 OkHttp 기반으로 작동하기 때문에, OkHttp의 Interpreter를 사용해서 고정적인 헤더를 추가하거나 응답값을 가로채서 원하는 데이터 형태로 가공하는 등의 작업들이 가능하다. https://jsonplaceholder.typicode.com/posts 이러한 Ret..
데이터 바인딩을 하기 위해 가장 먼저 해야할 일은 xml 파일에 대응하는 binding 파일의 객체를 생성하는 것이다. 이 객체를 이용해 xml 아이디를 바로 접근해 뷰를 제어할 수 있다. binding = DataBindingUtil.setContentView(this, R.layout.activity_notification) activity에서는 위처럼 xml 파일명을 setContentView에 넣어서 binding 객체를 얻는다. override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container..