본문 바로가기

[Android]/허접 Programming Tips

(15)
[소셜로그인] 안드로이드 애플 로그인(Sign in with apple) 구현하기 3편 안녕하세요! 허접 샴푸입니다. 요새 통 바빠서 포스트를 작성하지 못했습니다. 이번 편은 안드로이드에서 애플 로그인을 구현하기 위해 필요한 안드로이드 앱 쪽을 살펴보겠습니다. 거두절미하고 어떻게 구현하는지 바로 알아보도록 하겠습니다. [START] 1. Const.kt 작성 (상수 설정) [APPLE_CLIENT_ID] APPLE_CLIENT_ID는 https://developer.apple.com/account/resources/identifiers/list/serviceId로 들어가면 IDENTIFIER이라고 되어있는 놈의 값입니다. [APPLE_REDIRECT_URI] APPLE_REDIRECT_URI는 1편에서 말씀드린 Return URLs에 작성한 주소를 적습니다. 2. Interaction.kt..
[소셜로그인] 안드로이드 애플 로그인(Sign in with apple) 구현하기 2편 안녕하세요! 허접 샴푸입니다. 요새 통 바빠서 포스트를 작성하지 못했습니다. 이번 편은 안드로이드에서 애플 로그인을 구현하기 위해 필요한 서버 쪽을 알아보도록 하겠습니다. 거두절미하고 어떻게 구현하는지 바로 알아보도록 하겠습니다. [START] 1. client_secret을 구합니다. 출처: https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple 필요한 값들 [key_file] 1편에서 생성한 Key 파일입니다. 위 ruby 스크립트와 같은 폴더에 다운받은 .p8 확장자의 Key 파일을 집어넣습니다. 참고로 저는 .p8 확장자를 파일명에서 제거하여 key.p8이 아닌 key로 설정 및 작성하였습니다. 직접 작성하셔야 ..
[Tip] ViewModel의 LiveData를 작성하는 방법 안녕하세요 허접샴푸입니다. 간단하게 Android ViewModel에서 LiveData를 작성하는 방법을 끄적여 봅니다. [예] 출처: https://classroom.udacity.com/courses/ud9012/lessons/da3967cc-ba85-4045-bb46-dea1c770fb8b/concepts/d6779adf-494a-484d-870c-1e054eabed11 우선 MutableLiveData는 말 그대로 "Mutable" 즉 변형이 가능한 LiveData로서 읽기 / 쓰기가 가능합니다. 그리고 그냥 LiveData는 읽기 전용입니다. 참고로 LiveData에서 get() = { } 형태의 코드는 Kotlin 의 Backing Property라고 불리는 속성입니다. (Backing Pro..
[소셜로그인] 안드로이드 애플 로그인(Sign in with apple) 구현하기 1편 안녕하세요! 허접샴푸입니다. 요새 통 바빠서 포스트를 작성하지 못했습니다. Android와 IOS 둘 다 개발하는 앱 개발자라면 소셜 로그인을 한 번쯤 구현해보셨을 것입니다. 아이폰 앱에서 '구글 로그인', '페북 로그인' 등의 소셜 로그인을 넣으려면 "Sign in with Apple"(애플 로그인)을 필수적으로 넣어야 합니다. 이 때문에 안드로이드에서도 필수적으로 구현하게 되었습니다. 왜냐하면 Iphone 사용자가 어떠한 앱을 '애플 로그인'을 통해 사용하다가 안드로이드 폰으로 바꾸었다고 가정해봅시다. 안드로이드 폰에서 그 앱을 다시 사용하고자 다운로드하였는데 '애플 로그인'이 구현되어 있지 않으면 자신의 계정 관련 데이터를 불러올 수 없기 때문에 매우 좋지 않은 User Experience 겠죠? ..
[Navigation] Android Jetpack Navigation + BottomNavigationView (2 / 2) 안녕하세요 허접샴푸입니다! Navigation 관련 2편입니다. 이번 편에서는 NavigationExtensions에 대해서 알아보고 MainActivity.kt 코드를 작성하도록 하겠습니다. 긴 말 없이 바로 이어나가도록 하겠습니다. [START] 일단 먼저 1편에서도 말씀드렸지만, Google Sample을 참고한 것이기 때문에, 자세한 구현은 저도 모르는 부분들이 있습니다. 그러나 설명할 수 있는 부분까지 설명하도록 하겠습니다. 참고 : https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample (1) NavigationExtensions.kt 복사 붙이기 위에 있는 NavigationE..
[Navigation] Android Jetpack Navigation + BottomNavigationView (1 / 2) 안녕하세요 허접샴푸입니다! Android Jetpack 라이브러리 중 하나인 Navigation에 대해서 알아보도록 하겠습니다. 최근 들어 안드로이드 앱들을 보면 모두 화면 하단에 메뉴가 있으며 중간 화면이 스위치 되는 Fragment + BottomNavigationView 형태를 하고 있습니다. (물론 옛날부터 그랬겠지만, 예전에는 정형화된 라이브러리가 없어서 Fragment 전환을 코드로 구현하는 것이 쉬운 일이 아니었습니다.) Google에서 2017년 Jetpack 및 Android Architecture Components를 출시하며 Navigation Component가 생겨났으며, Fragment 전환의 어려움을 조금이나마 덜 수 있게 되었습니다. 위 App을 보아도 모두 하단에 Botto..
Xml에서 tools는 도데체 무엇인가? 안녕하세요! 허접샴푸입니다. 이런저런 안드로이드 개발을 하다보면 xml 파일에 "tools"라는 놈을 본적이 있을 것입니다. 아래 사진처럼, MainActivity의 layout 파일인 activity_main.xml을 보다보면 xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" 이런 것들을 볼 수 있습니다. 저도 몰랐으며 방금 알게 된 tools에 대해 알아보도록 합시다! [START] 참조 : https://developer.android.com/studio/write/tool-attributes 1) 일단 tools는 namespace이며 design-time (디자인 타임) 속성이라고 합니다. 2) 실제로 앱이 ..
안드로이드 Kotlin, Coroutine으로 Custom Loading Dialog(커스텀 로딩 다이얼로그) 구현하기 안녕하세요 허접샴푸입니다~! 이번에는 Coroutine을 이용하여 커스텀 Dialog를 2초 동안 보여지게 하고 2초 후 꺼지게 하는 방법에 대해 설명해 드리도록 하겠습니다. Coroutine 공식 github 사이트를 통해 더 많은 정보를 얻어가시기 바랍니다. Coroutine -> https://github.com/Kotlin/kotlinx.coroutines Kotlin/kotlinx.coroutines Library support for Kotlin coroutines . Contribute to Kotlin/kotlinx.coroutines development by creating an account on GitHub. github.com [1] 먼저 Coroutine을 사용하기 위해서는 bu..