분류 전체보기
-
Firebase Clounding Message 구현 (2) - 서비스 구현Android/FireBase 2019. 8. 5. 18:29
기본셋팅까지 다 끝내셨으면 이제 Firebase에서 날라오는 알림을 받기 위한 서비스를 구현 해주어야 한다. 1. FirebaseMessagingService 상속받은 클래스 생성 class MyFirebaseMessagingService : FirebaseMessagingService() { /** * 메시지를 받았을 경우 그 메시지에 대하여 구현 */ override fun onMessageReceived(remoteMessage: RemoteMessage?) { Log.d(TAG, "Received Message !!") } /** * 구글 토큰 값 흭득 * 아래 토큰은 앱이 설치된 디바이스에 대한 고유값으로 푸시를 보낼때 사용 */ override fun onNewToken(token: Strin..
-
Firebase Clounding Message 구현 (1) - 기본적인 환경 구축Android/FireBase 2019. 8. 5. 18:19
GCM이 멸망하고 FCM이 두둥탁! 간단하게 만들어 보는걸 해보도록 하겠습니다. 1. Firebase Project 생성 및 google-services.json 등록하기 별다른거 없이 프로젝트 이름 넣어주시구요 저희의 목적은 FCM이니 애널리틱스는 나중에 몇분 안걸리구 끝납니다. 제일 아래 있는 Cloud Messaging을 눌러주시고 중앙에 안드로이드 아이콘 클릭! 정보를 쭉쭉 입력 google-services.json 파일 다운로드 후 등록 홈페이지에서 설정은 이제 끝났습니다. 2. Postman 설치하기 https://www.getpostman.com/ Postman | API Development Environment Postman is the only complete API developmen..
-
Android Architecture Components #5 - RoomAndroid/AAC 2019. 8. 5. 18:04
대부분의 앱들은 대량의 데이터를 데이터베이스에 구조화 시켜서 영속적으로 저장한다. 이를 Room이라는 라이브러리를 사용하면 쉽게 작성이 가능하다. 구글에서는 안드로이드 앱의 데이터베이스 이용을 Room으로 작성할것을 강력하게 권고하고 있다. ROOM은 ORM(Object Relational Mapping) 으로써 쉽게 말해 데이터베이스의 객체를 자바 or 코틀린 객체로 매핑해주는것 입니다. ROOM은 SQLite의 추상레이어 위에 제공하고 있으며 SQLite의 모든 기능을 제공하면서 편한 데이터베이스의 접근을 허용합니다. Room과 SQLite의 차이점 1. SQLite 경우 쿼리에 대한 에러를 컴파일에 확인하는것이 없지만 ROOM에서는 컴파일 도중 SQL에 대한 유효성을 검사 가능합니다 2. Schem..
-
Android Architecture Components #4 - NavigationAndroid/AAC 2019. 8. 5. 18:04
Navigation을 사용하려면 Fragment에 대해서 잠시 짚고 넘어가야 한다. Fragment는 하나의 액티비티가 여러 개의 화면을 가지도록 만들기위해 고안된 개념으로 옛날에 태블릿의 화면 구성을 위해서 1개의 액티비티의 3개의 화면을 출력하고 싶으나 그 당시 View로서는 불가능하거나 너무 어려운 처지였다. 그래서 Fragment라는 것을 만들었다고 한다. 이러한 Fragment를 좀 더 쉽게 다루고 화면 전환시의 코드나 전체적인 앱의 흐름을 파악하기 좋게 하기 위해 IOS의 스토리보드가 있듯이 안드로이드에도 Navigation이라는 것을 만들어서 사용을 하게 되었다. 단, Activity는 지원하지 않으며 오직 Fragment만 지원을 한다. 그래서 액티비티 1개에 여러개의 프래그먼트가 들어가는..
-
Android Architecture Components #3 - LiveDataAndroid/AAC 2019. 7. 31. 16:11
제목부터 재미있어 보이는 LiveData! LiveData는 Activity나 Fragment의 수명주기에 따라 Observable한 data holder 클래스이다. 따라서 어떤 데이터의 실시간 변화에 따른 UI 업데이트가 필요할 때 사용합니다. Observer pattern을 사용하여, UI component가 data가 변화를 요청하여 변경점이 있으면 업데이트 하는것이 아니라, Data driven 방식으로 data가 변경되면 UI에게 업데이트를 알려준다. 실제로 ViewModel에서 데이터를 가져다 쓰는 View 입장에서는 ViewModel의 데이터가 바뀌면 View로 바뀌어야 하는데 실제 Rx나 LiveData를 쓰지 않고서는 좀 복잡하게 캐치를 해야하는 번거러움이 있다. 이를 Google에서 ..
-
Android Architecture Components #2 - ViewModelAndroid/AAC 2019. 7. 31. 15:46
Android Arcitecture Component 중 한개인 ViewModel에서 알아보자 ViewModel은 MVVM 공부를 하면서 알아보았던 개념인데 View와 Model사이에서 징검다리 역할과 View의 추상 개념으로 View가 가지고 있어야 할 데이터를 ViewModel에서 가지고 있어 View의 역할을 충실히 만들자는 것이 목표이다 그래서 이러한 ViewModel의 구현을 도와주고자 나온것이 ViewModel...!? 이름이 똑같아서 헷갈리기는 하나 전혀 다른 존재인거를 명심하자 ACC ViewModel의 특징은 화면 회전시 데이터를 유지해준다는 점이다 안드로이드에서 화면을 돌리면 OnDestroy -> OnCreate가 되어 가지고 있던 데이터를 다 날리는 셈이 된다. 예를 들면 버튼을 클..
-
Marker로 지도에 표시를 해보자Android/LBS 2019. 7. 29. 16:44
지도에 하나씩 동그란 기호가 있는것을 보았을 것이다 바로 고놈이 마커(Maker)! 한번 개발해 보도록 하자 소스는 이전 Android Map에서 동일하게 시작합니다. 1. 마커 생성하고 적용하기 override fun onMapReady(googleMap: GoogleMap?) { if (googleMap != null) { map = googleMap // CameraSetting val latLng = LatLng(37.550227, 126.987006) val position = CameraPosition.builder().target(latLng).zoom(14f).build() map.moveCamera(CameraUpdateFactory.newCameraPosition(position)) v..
-
Geocoder 도분초를 주소로, 주소를 도분초로!Android/LBS 2019. 7. 29. 16:30
Geocoder는 위 경도를 주소 문자열로 혹은 주소를 위경도 값으로 변형시키기 위한 프로그램 Geocoding : 주소를 위경도로 변환 Reverse Geocoding : 위경도를 주소로 변환 내부적으로 Google Server와 Network 통신이 이루어진다. 1. GeoCoder 사용하기 문자주소 -> 위 경도 val geocoder = Geocoder(this) val results = geocoder.getFromLocationName("서울특별시 동대문구", 1) val latlng = LatLng(results[0].latitude, results[0].longitude) 서울특별시 동대문구를 기점으로 가장 근사값을 가져와서 출력한다. lat/lng: (37.574368199999995,1..