반응형 프로그래밍좀비 강의 350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법 개인앱으로 월급의 2~7배를 벌게 된 7년간의 여정과 노하우를 모두 담았습니다. 강의로 시간과 노력을 레버리지 하세요! 보러 가기 개발 공부 기록하기/- Android39 [Android] Intent, Bundle, SavedStateHandle 객체 쉽게 전달하기. Intent, Bundle, SavedStateHandle로 다양한 데이터를 넘겨받는데 특히 객체를 넘겨받을 경우가 많다. 여러가지 방법이 있겠지만 주로 사용하는 방법은 객체를 Json으로 변환한 뒤 다시 받는 쪽에서는 Json을 객체에 매핑시켜 데이터를 가져오는 구조로 주로 사용을 했다. AS-IS 하지만 이게 매번 하려니 여간 번거로운게 아니다 하나 예시를 보자. val dataDTO = DataDTO(....) val intent = Intent(context, InfoActivity::class.java).apply { val jsonAdapter = moshi.adapter(DataDTO::class.java) this.putExtra("test", jsonAdapter.toJson(dataDT.. 2023. 11. 26. Android Kotlin EditText 콤마 붙히기 (feat. Extension) EditText에서 숫자를 입력하면, 콤마가 나오게 하고 싶을때가 있다. Kotlin Extension을 활용하여 간단하게 만들어 보았다. 사용법 EditText에 내가 만든 함수만 사용하도록 하면 끝! 의존성 추가 androidx.core 라이브러리를 사용하면 EditText에 변경된 내용만 바로 가져오는 Extension 코드가 있는데 이를 활용하였다. app 단위에 Gradle 에 다음과 같은 의존성을 추가해주도록 하자 implementation 'androidx.core:core-ktx:1.6.0' 코드 fun EditText.initComma( listener: ((originNumber: Double) -> Unit)? = null, ) { var amount = "" this.doOnText.. 2021. 9. 5. Android Flavor + Fastlane (Release + Screenshot) 자동화하기 서론 요즘 앱을 찍어내는 거에 관심이 부쩍 커졌습니다. 하나의 틀을 만들어두고 컨텐츠만 간단하게 변경할 수 있다면 단시간에 많은 앱들을 만들어낼 수 있지 않을까?라는 생각이 들어서죠😎 이번에는 조금 무리해서 무려 85개의 앱을 찍어내보려고 작업하던중 겪은 삽질기를 공유하고자 합니다. (참고로 포스팅에 어떤 앱인지는 공유하진 않아요 😂) 우선 앱을 출시하는데 있어서 많은 과정들이 필요한데, 애드몹 광고를 추가하여 수익화가 필요한 앱이라면 다음과 같은 과정을 거쳐야합니다. 관련 모든 코드는 Github에 등록해두었습니다 :) Google Play Console 단계 1. Google Play Console에서 앱을 생성하는 단계 - 앱 이름 언어 정하고, 언어를 정하고, 앱인지 유료인지 무료인지 기타 정책을.. 2021. 7. 22. Android Virtual Device 하단 버튼 제거 가상 디바이스를 생성 하고 난 이후 실행한 모습입니다. 다 좋은데 하단부에 존재하는 네비게이션 버튼들이 거슬리게 존재합니다. 물론 일반적인 경우에는 크게 상관없지만 스크린샷을 찍는 작업을 하게될경우 하단 버튼들도 같이 촬영되기 때문에 보기에 이쁘지 않습니다. 이를 제거해주도록 합시다. 상단에 Devices 선택하는 부분에서 AVD Manager를 선택합니다. AVD 화면에서 내가 생성한 디바이스 가장 우측 아래 화살표 버튼을 누르고 Show on Disk를 선택합니다. config.ini 파일이 존재하는데, 이를 만만한(?) 메모장으로 열어봅니다. 수많은 설정값들이 나열되어있는데, hw.mainKeys=no 값을 yes로 변경 해줍니다. 변경하였다면, 파일을 저장해주고 다시 AVD에서 가상디바이스를 재실.. 2021. 7. 21. 안드로이드 - 배경 투명도 조절하기 단색으로 특정 뷰의 색상을 채울수도 있지만 투명도를 주어서 뒤에 배경이 보이게 한다던지 처리가 필요할때가 있습니다. 이럴때 색상값 앞에 투명도 값을 추가하여 주면 됩니다. #000000 -> 기본 검정색 #80000000 -> 앞 두자리는 투명도 값 위와 같이 겹쳐진 두개의 뷰가 있습니다. 검정색 뷰에 투명도를 줘서 뒤에 뷰를 보이게 투명도를 약 30% 수준으로 낮춰보겠습니다. 결과 HEX %별 비율 값 100% — FF 95% — F2 90% — E6 85% — D9 80% — CC 75% — BF 70% — B3 65% — A6 60% — 99 55% — 8C 50% — 80 45% — 73 40% — 66 35% — 59 30% — 4D 25% — 40 20% — 33 15% — 26 10% — 1.. 2021. 6. 15. FCM Push Notification(HTTP v1) with OAuth 2.0 Playground / Postman / Terminal - Part2 이전 글에서는 Firebase Console + FCM Legacy API로 푸시를 발송해보는 내용이었다면, 이번 Part2에서는 구글에서 권장하고 있는 FCM HTTP v1 API을 사용(현재 기준 가장 최신)하여 푸시를 발송해보는 내용을 정리해보도록 하겠습니다. 이번에는 Postman, Terminal 그리고 OAuth 2.0 Playground를 사용해보도록 하겠습니다. FCM HTTP v1을 왜 사용하거나 마이그레이션 해야될까요? Firebase 문서에 따르면, Legacy > HTTP v1으로 마이그레이션 하거나, HTTP v1을 사용했을때 아래와 같은 이점이 있다고 합니다. 액세스 토큰을 통한 보안 향상 보다 효율적인 플랫폼에 따른 메세지 맞춤설정 새 클라이언트 플랫폼 버전을 위한 확장성 강화.. 2021. 1. 19. FCM Push Notification with Postman Part1 안드로이드에서 푸시 알람을 처리하기 위한 방식으로 보통 FCM을 사용하게 됩니다. 앱에서 Push 개발을 하는건 크게 문제 없지만 내가 만든 코드가 잘 동작하는지 확인을 해볼 필요가 있는데 이번 포스팅에서는 어떻게 그 작업을 수월하게 할 것인지 정리해보는 시간을 가지기로 했습니다. 순차적으로 풀어가는 방식이 아닌, 바로 포스트 작성일 기준 최신버전 사용법을 알고 싶으신분은 FCM Push Notification(HTTP v1) with OAuth 2.0 Playground / Postman / Terminal - Part2 포스팅을 참조해주세요 FCM 푸시 알림을 테스트 하는 방법 1. Firebase 콘솔에서 푸시를 보내는 방법 이 방식은 가장 간단하지만 알림 메세지와 추가 데이터 그리고 채널 정도만 .. 2021. 1. 18. 앱 설치화면 보내기 또는 해당 앱 실행하기 우리는 안드로이드 앱개발하다가 아래와 같은 상황을 개발 해야될 때가 있다. - 특정 앱이 있으면 그 앱을 실행킨다. - 만약 없다면 플레이스토어에서 해당 앱을 설치하도록 유도한다.어떻게 해야될까? 우선 사용자의 폰에 내가 실행시키고자 하는 앱이 설치 되어있는지 판단해야된다. 앱이 설치가 되어있다면 그 앱을 intent를 활용하여 연다. 설치가 되어있지 않다면 구글 플레이스토어에 그 앱의 설치화면으로 보낸다. 위의 로직을 구현하면 된다. 로직은 So Simple! 추가 Tip 코틀린에서 확장함수를 사용하는 걸 좋아한다. 코드에보면 fun Context.market(..), fun Context.openApp(..)과 같이 Context를 확장한 함수를 볼 수 있는데 저렇게 사용하면 Context영역 아래에.. 2019. 8. 25. 왜 개발모드일때는 광고가 노출되지 않지? Failed to load ad: 3 왜 개발모드일때는 광고가 노출되지 않지? MobileAds.initialize(context, context.getString(R.string.admob_id)) adRequest = AdRequest.Builder().build() mInterstitialAd = InterstitialAd(context).apply { adUnitId = context.getString(R.string.admob_interstitial_id) adListener = object : AdListener() { override fun onAdLoaded() { DLog.w("admob onAdLoaded !!") showAd() } override fun onAdClosed() { DLog.w("admob onAdClos.. 2019. 1. 2. 이전 1 2 3 4 5 다음 반응형