오늘은 KakaoMap APi 사용 시 인증 절차에서 필요로 하는 "키 해시 추가" 단계에 대해 리뷰한다.팀원분 중에 팀원들의 키 해시값도 모두 들어가야 했던 걸로 기억한다고 하셔서 플랫폼에 설정하는 키 해시값을 얻는 방법을 공유할 겸 리뷰하려한다. 위의 키 해시 값에는 2가지가 올 수 있다 (https://developers.kakao.com/docs/latest/ko/android/getting-started#before-you-begin-add-key-hash)- 디버그 키 해시: 프로젝트를 처음 생성하거나 디버그할 때, 안드로이드 스튜디오에서 개발 환경에 맞게 자동으로 생성되는 디버그 인증서에서 해시(hash)한 값- 릴리즈 키 해시: 앱 스토어에 앱을 배포하기 위해 생성한 릴리즈 인증서로부터 ..
분류 전체보기
보호되어 있는 글입니다.
gps 기반 위치 정보와 와 구글 play 서비스의 위치 라이브러리를 사용하는 코드들을 리뷰한다. - GPS1. Manifest에 권한 추가 2. 권한 체크 및 요청// 권한 체크 함수private fun checkPermission(): Boolean { return ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED}// 권한 요청private fun requestLocationPermission() { if (checkPermission()) { return } ActivityCompa..
1. SharedPreferencesSP 사용법은 아주 간단하다. 아래 코드 참고.class SharedPreferencesFragment : Fragment() { private var _binding: FragmentFirstBinding? = null private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View { _binding = FragmentFirstBinding.inflate(layoutInflater) load..
[6주차 챌린지반 강의] 복습 TIL 핵심 내용 - Domain Layer(usecase 적용)- RecyclerView에 ListAdapter 사용 예시- StateFlow, SharedFlow 소개 디렉토리 구조 및 역할 정리 - 이해한 대로 작성하여 의역의 여지가 있음- network(data에서 분리함) - RetrofitClient : RetrofitBuilder object 정의 - AuthInterceptor : 네트워크 통신 시, 가로채서 API 호출에 필요한 공통 Header(인증 Key값 등)를 심어준다 - data - model(SearchResponse - data class) : Response의 Json 타입에 맞게 data calss 셋업 - remote(SearchR..
[5주차 챌린지반 강의] 복습 TIL 1. [06:30] Data Layer : Repository, RemoteDatasource로 구성된다 - 앱의 데이터를 읽고 쓰는 레이어 DataSource = Model(Room) - SQLite UI Layer -> ViewModel -> Repository -> DataSource = RemoteDataSource(Retrofit) - Api Server 2. [08:50] V..
[내일배움캠프 - 숙련 개인과제] 오늘은 지난주 부터 학습했던 RecyclerView, Dialog, Notify 등을 이용하여 중고 거래 App을 구현한 과정을 리뷰해보려 한다. 각 Chapter의 요구사항은 아래와 같다. https://github.com/rlaxodud214/NBC-carrot-market/blob/dev/README.md NBC-carrot-market/README.md at dev · rlaxodud214/NBC-carrot-market 당근 App 구현. Contribute to rlaxodud214/NBC-carrot-market development by creating an account on GitHub. github.com data/model(아래 접은 글) 더보기 @..
오늘은 API Call에 쓰이는 Retrofit2를 학습해보고 정리를 하려고 한다. 사용중인 서버가 없기 때문에 jsonplaceholder를 사용해서 Test할 예정이다. 1. 기본적인 사용법 (0) build.gradle에 dependencies 추가 dependencies { ... implementation('com.squareup.retrofit2:retrofit:2.9.0') implementation('com.squareup.retrofit2:converter-gson:2.9.0') } (1) Retrofit 객체를 생성한다. import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory object Retrofi..
[스탠다드 3주차 강의 내용 중 일부] // 싱글톤 구현 -> "추후 DI를 이용하면 이렇게 작성하지 않아도 된다." class DataSource { companion object { private var INSTANCE: DataSource? = null fun getDataSource() : DataSource { // synchronized는 동기화 블록으로 한 번에 하나의 스레드만 접근할 수 있게 한다. // -> 다중 스레드 상황에서 여러 Instance가 생성되지 않도록 단일 객체(싱글톤)을 보장하는 역할이다. // 쓰레드는 'DataSource::class'에 대한 Lock을 획득한 뒤, 내부로 진입할 수 있음 return synchronized(DataSource::class) { val..
[본 캠프(앱 개발 숙련) 강의내용 정리] 1. Fragment - 정의 : Acitivity 위에서 동작하는 모듈화된 사용자 인터페이스 - 특징 : 액티비티와 분리되어 독립적으로 동작할 수 없음 -> Fragment 위의 Host가 Fragment가 될 수는 있지만, 최상단 Host에는 무조건 Activity가 위치해야함 - 사용시기 : 아래와 같이 TabLayout을 구현한다고 할 때, 각 탭의 UI를 Fragment로 구현할 수 있음. - 화면 하나당 Activity가 매칭되게 구현하지 말 것 - (의문점) 그렇다면, 각 탭의 UI를 Activity가 아닌 Fragment로 구현했을 때 어떤 장점이 있길래 써야하는 걸까? -> 장점 1. 높은 성능 : Activity로 화면을 계속 전환하는 것보다 ..