본문 바로가기

전체 글199

[Android] jetpack compose : State Hoisting(상태 호이스팅) ✅ State Hoisting(상태 호이스팅)이란?컴포저블 함수 내부에서 상태를 직접 관리하는 대신, 상위 컴포저블로 상태를 끌어올려(State Lift) 관리하는 패턴을 의미합니다.📌 왜 State Hoisting을 사용할까?재사용성 증가: 상태를 특정 컴포넌트에 묶지 않고, 상위에서 관리하면 여러 하위 컴포넌트에서 공유 가능단방향 데이터 흐름 유지: 데이터 흐름이 예측 가능하고 유지보수 쉬워짐컴포저블의 책임 분리: UI 컴포저블은 UI만 담당하고, 상태 관리는 상위에서 담당🚀 예제: State Hoisting 적용 전 vs 후❌ 상태를 내부에서 관리하는 잘못된 예시@Composablefun Counter() { var count by remember { mutableStateOf(0) } /.. 2025. 3. 7.
[Android] 정기 결제 A to Z 정기 결제란 즉 구독 서비스를 결제하는 것이다.출시한 지 어연. 벌써 6개월이 지나간다. 아직 다운로드 수가 많지는 않지만, 점차 늘어나는 것을 보면 신기하다. 1. Google Play Console에 정기 상품 등록을 해야한다. 2. 로컬 빌드는 테스트 결제만 할 수 있다. (실결제가 안됨)실결제 테스트를 하기 위해서는 공개 테스트 버전으로 앱을 올린 후, 다운을 받아야 한다. 공개 테스트 버전으로 앱을 올린다는 것은 release 파일을 올리는 것임으로!!!server.url을 설정해줬던 것을 테스트 환경 Url로 바꿔주도록 하자. 3. 실결제 테스트는 공개 테스트 앱 버전으로 다운받아서 진행한다.로컬 빌드 과정에서는 테스트 결제로만 bottom_sheet가 뜬다.결제를 할 경우 서버에서 구글로부터.. 2025. 2. 12.
[Android] 안드로이드 정기 결제 구독 토큰 변화 실제 토큰 값 로그 찍어보면서 확인한 내용을 토대로 글 작성하는 글. 정기 구독 서비스를 앱 내에서 신청해본 적이 별로 않아서 헷갈렸다.그럼에도 오류가 난다면? 대표적인 구독 상용 서비스인 버블을 결제해보도록 하겠다. 구매 토큰 변화가 중요한 이유는 토큰 값을 기준으로 사용자의 결제 상태를 알 수 있기 때문이다.구독 신청, 구독 취소, 재갱신 등 구독 정보가 어떻게 바뀌었는 지 구글로부터 알 수 있는 key이다. 현재 playStore에 로그인된 계정의 정기 결제 구매 토큰을 가져오는 것이기 때문에, 결제 당시 계정이 아니라면 오류가 날 것이다.구매 당시 계정으로 로그인이 되어있어야 한다!왠만해서는 구매 당시 계정으로 되어있겠지만, 지금 테스트를 여러 계정으로 돌려서 하다보니 왜 오류가 나는 지 처음에 .. 2025. 2. 9.
[Kotlin] 문법 정리 1탄 (Array, List) ✅ 1. Array vs IntArray 차이📌 ArrayArray는 객체 배열이라 각 요소가 참조형(Reference Type)null을 저장 가능생성할 때 arrayOf() 또는 Array(size) { initializer } 사용 val arr1: Array = arrayOf(1, 2, 3) // Arrayval arr2 = Array(5) { it * 2 } // [0, 2, 4, 6, 8]val arr3: Array = arrayOf(1, 2, null, 4) // null 가능 📌 IntArrayIntArray는 기본형(int) 배열이라 메모리 효율이 좋음null을 저장할 수 없음intArrayOf() 또는 IntArray(size) { initializer } 사용val intArr1:.. 2025. 2. 7.
[Android] SMS Retriever 못 받아오는 오류 운영에서 해시 키 인식이 안되었던 이유안드로이드 버전 12 이하 까지는 작동이 됨버전 13 이상부터는 RECEIVER_NOT_EXPORTED 필터를 걸게 되어 메세지를 내용을 받아오지 못했음RECEIVER_EXPORTED 로 변경외부에서 브로드 캐스트 리시버 실행 필터 → 시스템 이벤트(SMS 수신)을 할 수 있음 Dev에서 해시 키 인식이 안되었던 이유메세지 해시 값이 로컬 키파일에 의한 해시 값으로 변경되어 있었음keystore에 의한 해시 값으로 변경 (기존 문서 dev 해시 값과 동일) 2024. 12. 19.
[Floney] 안드로이드 앱 계정 이전 앱을 출시해서 이제 정기 결제를 출시하려던 찰나이다.정기 구독 상품을 등록하려면, 결제 프로필이 필요하다. 경고 : 결제 프로필에 문제가 있음 경고를 무시하고 그냥 계속 개발하다가 문제를 직면했다. 메일이 왔다. 특정 날짜까지 수정하지 않으면 계정이 날라간다는 소식이었다. 내용은 개발자 계정 유형과 결제 프로필 유형이 다르면 안된단다 .. ㅎ 확인해보니 개발자 계정은 개인으로, 결제 프로필 유형은 조직으로 등록을 한 것이다.이 경우에 수정이 불가능하다고 한다. 그래서 다시 개발자 계정을 만들고 유형을 똑같이 해달라는 메일그대신, 앱과 데이터는 보존이 된다고 한다. https://support.google.com/googleplay/android-developer/answer/6230247?hl=ko&re.. 2024. 11. 27.