본문 바로가기

Computer/Android&iOS169

[Android] 인앱 정기결제 아이템 의미 1. 결제 기간 (Billing period)설정값 예시: 매월가장 기본적인 설정입니다. 사용자가 얼마나 자주 돈을 낼 것인가를 정합니다.의미: 사용자가 구독을 유지하는 한 결제가 반복되는 주기입니다. (주간, 월간, 연간 등)참고: 보통 '월간'과 '연간' 상품을 가장 많이 구성하며, 연간 상품의 경우 할인율을 적용해 유도하는 것이 일반적입니다. 2. 유예 기간 (Grace period) !!!중요!!!설정값 예시: 7일결제가 실패했을 때 바로 "너 구독 끝!" 하고 내쫓는 것이 아닙니다. 구글이 개발자에게 권장하는 설정이기도 합니다.의미: 사용자의 카드 한도 초과나 잔액 부족 등으로 **결제가 실패했을 때, 구독 자격을 유지해 주는 '봐주는 기간'**입니다.상태: 이 기간 동안 사용자는 여전히 유료.. 2025. 12. 2.
Android WebViewAssetLoader: 안전하고 효율적인 로컬 리소스 로딩 들어가며Android 앱에서 WebView를 사용할 때, 로컬 HTML, CSS, JavaScript 파일을 로드해야 하는 경우가 많습니다. 과거에는 file:// 스킴을 사용했지만, 보안 문제와 CORS 제약으로 인해 많은 제한이 있었습니다. Android에서는 이러한 문제를 해결하기 위해 WebViewAssetLoader를 제공합니다. WebViewAssetLoader란?WebViewAssetLoader는 Android Jetpack의 webkit 라이브러리에 포함된 클래스로, 로컬 리소스(assets, resources)를 가상의 HTTP(S) URL을 통해 안전하게 제공할 수 있게 해줍니다.주요 특징:file:// 대신 https:// 스킴 사용CORS 정책 준수Same-Origin Policy .. 2025. 10. 22.
KMP (CMP) 프로젝트 init 플러그인 설치Android Studio 에서 Kotlin MultiPlatform 플러그인을 설치합니다. 프로젝트 생성새 프로젝트를 생성해서 Kotlin Multiplatform App 을 선택해서 앱을 작성합니다. settings.grdle.ktsrootProject.name = "Quiz"enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")pluginManagement { repositories { google { mavenContent { includeGroupAndSubgroups("androidx") includeGroupAndSubgroups("com.androi.. 2025. 10. 17.
Android Gradle 빌드 에러 해결: Duplicate class org.jetbrains.annotations 문제 상황 Android 프로젝트를 빌드할 때 다음과 같은 에러가 발생했습니다: Caused by: java.lang.RuntimeException: Duplicate class org.jetbrains.annotations.Nls found in modules - annotations-23.0.0.jar -> annotations-23.0.0 (org.jetbrains:annotations:23.0.0) - kotlin-gradle-plugin-2.1.0-gradle85.jar -> kotlin-gradle-plugin-2.1.0-gradle85 (org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0) Duplicate class org.jetbrai.. 2025. 10. 13.
Android studio 단축키 모음집 기능단축키설명모든 곳 검색Shift 두 번파일, 클래스, 액션, 설정 등 IDE 내 모든 것을 찾는 검색창클래스 검색Cmd+O클래스 이름만 입력해 즉시 해당 파일로 이동액션 검색Cmd+Shift+A메뉴나 설정에서 찾기 힘든 IDE 기능/액션을 검색하고 바로 실행선언으로 이동Cmd+B함수나 변수 위에 커서를 두고 누르면 정의된 원본 코드로 바로 점프최근 파일Cmd+E최근에 열었던 파일 목록을 보여줌. 파일 간 빠른 전환 기능단축키설명코드 포맷팅Cmd+Alt+L현재 파일의 들여쓰기와 공백을 프로젝트 스타일에 맞춰 단번에 정리빠른 수정Alt+Enter에러, 경고, 개선 제안이 있는 곳에서 누르면 IDE가 적절한 해결책을 제시코드 생성Cmd+N생성자, Getter, Setter, override 메서드 등을 .. 2025. 10. 10.
구글은 왜 isTablet() API를 만들지 않았을까 안드로이드 개발하다 보면 진짜 답답한 순간이 있다. 바로 "이 기기가 태블릿인지 폰인지" 판단해야 할 때다. // 개발자들이 결국 이런 코드를 짜게 된다fun isTablet(context: Context): Boolean { return (context.resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE}// 또는fun Context.isTablet(): Boolean = this.resources.configuration.smallestScreenWidthDp >= 600 이런 코드를 복붙하면서 한 번쯤 생각해봤을 것이.. 2025. 9. 29.