기본 콘텐츠로 건너뛰기

1월, 2023의 게시물 표시

안드로이드 앱 만들기 : 소셜 로그인 ( 네이버, 카카오톡, 구글) 구현해 보기

원본출처: 티스토리 바로가기 소셜로그인 요새는 대부분의 사용자들이 이런저런 SNS 등에 가입이 되어 있기 때문에 또 다른 개인정보를 제공해 가면서 로그인을 하려고 하지 않습니다. 또한 각각에 등록된 비밀번호를 기억하는 것이 이제 한계에 도달하기도 합니다. 그래서 사용 하는 것이 기존에 등록된 SNS계정을 이용해서 로그인하는 것을 선호(?)하는 경향이 있어 보입니다. 그래서 이번에는 우리가 만드는 앱에도 소셜 로그인을 구현해 볼까 합니다. 또한, firebase auth 을 통과하는 것까지 구현 보는 것이 이번 앱을 만들면서 고민했던 부분입니다. 로그인 화면 일반적으로 만들어지는 로그인 화면 예시 입니다. 이 화면에서는 기존과 같이 이메일과 비밀번호를 받아서 로그인하는 방식을 지원합니다. (사전에 등록을 해야 하기 때문에 등록하는 화면도 따로 구현이 되어야 합니다.) 다음은 소셜 로그인을 지원하는 버튼을 그려 보겠습니다. 아이콘은 여기 저기서 이미지는 구해지기는 하나 이걸 또 변환을 해서 사용해야 하기 때문에 android studio의 메뉴에서 File - New - Vector Asset에서 사용할 vector 이미지 소스 파일은 아래 붙여 두도록 하겠습니다. Google-08.svg 0.00MB kakao.svg 0.00MB naver.svg 0.00MB ※ 해당 이미지 들은 구글링을 통해서 얻어진 파일들 입니다. 여기저기서 구현 이미지 파일을 svg로 변환해서 사용했습니다. Kakao 로그인 사전에 kakao 개발자 계정을 통해서 앱을 등록하고 네이티브 Key는 얻어 왔다고 가정하겠습니다. 그 과정은 이번 이야기의 중심이 아니기 때문입니다. 제가 하는 경우는 settings.gradle 파일에 추가한 부분인데, kakao sdk 등을 내려받을 경로를 지정해 주었습니다. repositories { google() mavenCentral() gradlePluginPortal...

안드로이드 앱 만들기 : Firebase Auth singinWithCustomToken 활용편 (소셜 로그인 다음 이야기)

원본출처: 티스토리 바로가기 소셜 로그인 firebase에서 지원하고 있는 소셜 로그인(?)은 Google, Facebook, Apple, Microsoft, Twitter 등 대부분 외국계(?)입니다. firebase 의 소셜 로그인 지원 우리나라에서 대다수가 사용하는 naver, kakao 등은 없습니다. 그래서 지난 이야기에서 Naver, Kakao와 Google 계정으로 로그인하는 이야기를 해 보았습니다.   https://billcorea.tistory.com/308   안드로이드 앱 만들기 : 소셜 로그인 ( 네이버, 카카오톡, 구글) 구현해 보기 소셜로그인 요새는 대부분의 사용자들이 이런저런 SNS 등에 가입이 되어 있기 때문에 또 다른 개인정보를 제공해 가면서 로그인을 하려고 하지 않습니다. 또한 각각에 등록된 비밀번호를 기억하 billcorea.tistory.com   소셜 로그인 은 개인정보가 털린다? 이전 포스팅을 하고 나서 다른 글을 보다가 그런 이야기들이 많이 있더라고요. 소셜 로그인은 쉽게 접근이 가능하기 때문에 여기저기 등록하게 되면 개인정보가 어디서 털리는지 모르게 털린다는 이야기 많습니다.    그 이야기도 이해가 안 되는 부분은 아닙니다. 가입이라는 과정이 없다 보니 쉽게 남발(?) 하고 있지 않는 건가 하는 생각이 드는 건 동의가 되는 부분입니다.   카카오의 개인정보 동의 항목   네이버 개인정보 동의 항목   카카오나 네이버에서는 API을 제공하면서 제공이 되는 범위를 지정하게 되어 있습니다.  해서 개발자 또는 해당 사이트의 개발 범위에서 기본 정보만 확인하고 있다고 한다면, 개인정보 누출에 대해서는 고민이 필요 없지 않을까 하는 생각이 듭니다.    다만, 대부분의 사이트에서는 회원 관리를 위해서 다른 정보를 따로 수집하게 됩니다. 그때는...

이 시각 제주

원본출처: 티스토리 바로가기 올만에 왔던 고향은 연휴 끝 날 매서운 한파를 보인다. ㅠㅠ;; 이 겨울이 지나고 따스한 봄이 오길 기다려 본다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

안드로이드 앱 만들기 : ML translation 에러 메시지를 번역 해 보자

원본출처: 티스토리 바로가기 Translation 번역을 시도하는 방법에는 여러 가지가 있습니다.  그중에는 비용이 들어가는 방법도 있고, 일부 무료인 방법도 있습니다. 카카오 번역  API : 월 10,000자 까지는 무료 이후 1000자 단위로 18원 발 구글 cloud 번역 API : 월 최대 500,000자 까지는 무료 이후부터는 비용 추가 (기본 옵션 선택 시) 네이버 papago text 번역 : 1,000,000 단위 과금  20,000원 (과금 단위는 글자를 항상 올림) 등의 방법을 찾을 수 있습니다.    오늘 하고 싶은 이야기는 간단한 문구를 그냥 번역해 보는 방법입니다.    문서의 길이가 길고, 중요한 문서라고 한다면 비용이 들여서라도 번역은 정확하게 하는 것이 맞을 것 같습니다.  단지,  앱에서 사용하는 API들이 꼬부랑말(대부분 영어)로 되어 있는 것들이라서 API가 제공하는 오류 메시지를 그대로 보여 주는 것은 사용자 편의를 고려하지 않은 것이라 생각하게 되어 간편 번역을 해 보기로 했습니다.    구글에서 제공하는 ML Kit에 보면 여러 가지가 있지만 오늘은 그중에서 Translation의 사용하는 방법에 대한 예시를 적어 두고자 합니다.    https://developers.google.com/ml-kit/language/translation/android   Android에서 ML Kit를 사용하여 텍스트 번역  |  Google Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Android에서 ML Kit를 사용하여 텍스트 번역 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. developers.g...

1인 개발자로 살아 보기 : 어느 화요일의 개발 일기 (gradle 7.4.0 적용해 보기 ... 그 결과는 ?)

원본출처: 티스토리 바로가기 오늘 일과 어제 playstore에 올렸던 앱이 버벅 거린다...  우연히 사장 앱 수정중에...   오늘도 난 아무런 금전적 소득이 없다.  아직 뭐 한 달도 지나지 않았으니...  뭐 벌써 소득을 바라? 라고 말할 수 있을 것 같기는 하나... 그래도 ? 흠흠...   Gradle 7.4.0 오늘은 아침을 먹고 출근 하는 여보님을 배웅해 드리고, 난 또 앉아서 엊그제 올렸던 앱의 코드를 수정하고 있다.  어제 아침에 갑자기 android studio을 패치를 했더니, gradle 이 7.3.1에서 7.4.0으로 패치를 하게 됐다. 그래서 덩달아 gradle 파일에 implementation 선언했던 compose 버전도 1.4.0-alpha04 로 패치를 하란다.   아무 느낌 없이 그렇게 패치를 진행 했더니... 벌어지는 사태들...  bottom navigation bar을 대신해 볼 요량으로 사용하기 위해서 implementation 했던 것이 오류를 내뱋기 시작했다. ㅠㅠ;;   https://github.com/raamcosta/compose-destinations/issues/336   io.github.raamcosta.compose-destinations:core:1.8.32-beta upgrade refences ... · Issue #336 · raamcosta/compose-destinations An error occurs while doing ./gradlew clean build. Why? Stack traces ./gradlew : e: C:\workspaces\Boss0426\app\src\main\java\com\billcoreatech\boss0426\CalcComposeActivity.kt: (34, 31): Unr...

1인 개발자의 혼자 살아 보기 : 개인사업자 등록, 사업자계좌 개설은 ?

원본출처: 티스토리 바로가기 빌코리아 ( billcorea ) corea ( 라틴어 표기?)에 bill (청구서)를 내 볼까? 하는 의미 라면 너무 건창 한 가?  아무튼 오늘 부터 billcorea라는 이름의 개인 사업자가 되어 살아 보기로 했다.   25년 11개월 내가 다녔던 어느 회사의 근무 기간 그 이전에 다녔던 회사 2곳 과 젊은 날의 패기로 했던 창업기간 은  각각이 고작 3년을 넘겨 보지 못했던 거 같은데   이제 떠나야할 시간이 되어 가고 있다는 것을 느끼기 시작하면서  준비를 시작하기는 했지만, 이런저런 이유로 그 준비기간이 끝나지 않았지만, 다가온 퇴직   그리고 한달여는 조금 가볍게 놀았다. 그 사이에 문득 가보고 싶었던 울릉도 여행도 했고, 최근 3년여 동안 느꼈던 마음의 짐(?)도 내려놓았다.   한달을 넘게 쉼을 가졌더니, 이렇게 계속 쉼을 할 수 만은 없는 일이지 않은가 ?   사업자 등록증   오늘 첫날의 일과는 재활용 쓰레기를 버리는 것으로   시작하였다.   ㅋ~  혼자 하는 일이니   자유로울까?   혼자 하는 일이니 뭐가   다를까?   사업자 등록증 내기 세무서에 가야 하나? 어떻게 해야   하는지   모른다. 그래서 일단은 구글님(?)에게   물어보기로   했다. 네이버나, 다음 등의 검색   페이지에서도   검색이 되기는 하겠으나, 개발자로 살다 보니 구글이 더 편하게   다가온다.  국내 메인 포탈은 국내 뉴스가 먼저 들어오기 때문에 헛 눈길을 많이 하게 된다. 아무튼... 검색정보   사업자 등록은 검색된 내용으로 국세청 홈텍스를 이용하면 어렵지 않게 등록을 할 수 있었다.  다만, 업태 / 종목을 정하는 문제...

안드로이드 앱 만들기 : Alarm manager vs Job Scheduler vs Worker

원본출처: 티스토리 바로가기   손에 들고 다니는 스마트폰에 무슨 일을 그렇게 시켜 먹을라고(?) 이런 것들이 있는 가? 하는 생각이 들 무렵입니다.  그래도 우린 이제 이런 배치(반복작업을 위한) 처리를 해야 하는 경우가 있어서 이런 것들에 대해서 알아 보고자 합니다.    Alarm manager Job Scheduler Worker 반복적인 일을 시키는 방법 3가지를 살펴 보고자 합니다. Alarm manager 알림은 지정한 시간에 어떤 이벤트가 있는 지를 알려주는 역할을 하게 됩니다.  그것들 중에서 1회성 알림만을 사용하는 경우도 있기는 하겠지만,  앱을 개발하는 경우에는 반복적인 알림을 발생시키는 것이 좋을 때가 있습니다.  그때 사용을 하게 될 것 같습니다.    알림 매니저가 좋은 건 15분 미만의 경우도 반복 작업을 할 수 있다는 점 입니다. https://developer.android.com/reference/android/app/AlarmManager   AlarmManager  |  Android Developers   developer.android.com   Job Scheduler   이름 그대로 일을 스케줄에 맞게 반복적인 작업을 실행하는 경우에 사용하게 될 것 같습니다. 다만,  안드로이드 버전이 높아지면서 배터리 효율을 관리하기 위해 최소 시간이 15분이라는 간격을 유지해야 한다는 불편함(?)이 있다는 것이 아쉽게 다가올 뿐입니다.    https://developer.android.com/reference/android/app/job/JobScheduler   JobScheduler  |  Android Developers ...

안드로이드 앱 만들기 : onBackPressed 가 deprecated 되었다니 ?

원본출처: 티스토리 바로가기 onBackPressed 가 deprecated 되었다? 이제 우리는 구글이 제안하는 안드로이드 13에 타기팅하는 앱을 제출 해야만 하는 시기에 도달하고 있습니다.  구글이 새로운 안드로이드 버전을 배포하기 시작하면서 오래된 안드로이드에 대한 게시를 제한 합니다.    그래서 이번에 API 33 인 안드로이드 13에 타겟팅 하는 앱을 작성해 보았습니다. 그러다 만난 몇 가지 사용 제한이 되는 것들에 대한 정리를 해 두고자 합니다.    onBackPressed는 사용자가 뒤로 가기 버튼을 클릭하는 경우 제어를 하기 위해서 사용했던 함수 입니다. MainActivity 에서 최종적으로 뒤로 가기를 클릭 하는 경우 앱을 종료시키는 기능도 사용이 되는 함수였는 데...   안드로이드 13에서는 더 이상 사용할 수 없는 (?)  - 사용은 가능 하나 소스 코드에 중간 줄이 생긴 모양을 보면서 코드를 지속적으로 봐야 합니다.    onBackPressed 어떻게 해소를 하면 될까요?   CallBack을 하나 만들어 봅니다. private val callback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { doCloseApps() } } 다른 건 없고 이런 모양으로 callback 함수를 하나 만들어 둡니다.  그러고 onCreate 에서 이 callback 이 호출 되도록 한 줄 넣어 주는 것으로 그 코딩은 마무리 됩니다.    @RequiresApi(Build.VERSION_CODES.TIRAMISU) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(sav...