·🐸 Android
0. FCM 푸쉬 알림이란 서버에서 모바일 장치에 보내는 알림 또는 메세지이다. 직접 구현한 서버에서 사용자 장치로 알림을 보내기 위해서는 앱과 서버의 연결을 지속적으로 유지해야 한다. 하지만 FCM(Firebase Cloud Messaging)은 구글 클라우드 서버를 이용해 앱에서 서버에 연결하지 않아도 기기의 내부 연결을 통해 메세지를 보낼 수 있다. Firebase console 에서도 FCM token 을 넣어 푸쉬 메세지를 보낼 수 있지만, 서버와 연결한다면 이러한 과정을 거치게 된다. 1. FCM Message Type when your app in background, the method onMessageReceived never invoked FCM에서 보내는 메세지의 타입에 따라 앱의 포..
·🐸 Android
기존 안드로이드 OS에서는 유저의 동의없이 푸쉬 알림을 띄울 수 있었지만, 안드로이드 13 부터는 다른 permission 들처럼 알람 권한이 새로 생겼다. 알림 권한은 유저 기기의 OS가 13인 경우 모두 해당 된다. 즉 대응을 하지 않으면 유저들이 알림을 받지 못한다. 1. Delcare The Permission POST_NOTIFICATIONS (Notification Permission) 은 Target SDK API 33 이상부터 추가 가능 2. Scenario Target SDK API 32 이하의 앱이 Android 13 디바이스에 설치되면 Notification Channel을 등록할 때 자동으로 Notification 권한 요청 팝업이 나옴 Target SDK API 33 이상의 앱..
·💬 회고
0. 결심 당시 한꺼번에 장애를 겪으며 '어떻게 대응해야 효율적으로 할 수 있지? 이걸 어떻게 모두에게 전파할 수 있지? 그리고 이해관계자들에게는 어떻게 전파해야하지?' 라는 생각을 했었다. 하이브리드앱이라는 새로운 플랫폼이 생기면서 얽히게 되는 이해관계자들은 더 많아질 수밖에 없었다. 애초에 '이 에러가 나도 확인해야하는 에러였어?' 라며 자신이 이해관계자인지도 불분명한 경우도 있었다. 앱에서 디버깅이 불가하여 웹 개발자에게 요청해야하는 순간들도 있었으며 '이게 왜 앱에서 에러가 나는거야?'라며 이해도가 서로 일치하지 않는 경우가 있었다. 그리고 이렇게 취합된 문제정의와 해결 과정들을 운영팀과 소통하면서 전달하는 과정도 순탄치 않았다. 커뮤니케이션 코스트를 줄이면서도 운영팀은 문제 정의를 빠르게하여 서..
·💬 회고
이번 글은 1년 전 하이브리드앱을 출시하며 겪은 앱 안정화의 과정에서 느꼈던 것들을 얘기하고자 한다. 하이브리드앱이기에 웹과 앱의 통신과정에서 발생한 에러들도 많았다. 안드로이드 개발자는 나 혼자뿐이었으므로 하이브리드앱의 설계를 처음부터 끝까지 혼자서 담당했고 디버깅하는 과정에서도 웹 개발자와도 소통을 많이 했었어야 했다. 소프트웨어 개발을 하는 곳이라면 어느 곳에서든 장애가 없을 수 없다. 하지만 체감상 거의 대부분은 상대적으로 빠르게 해결할 수 있는 것들이다. 큰 장애는 1년에 몇 번정도 발생한다던데(by 개발팀장님) 그 일들을 한꺼번에 겪으면서 '앱 안정화'란 Task를 직접 만들고 프로덕트 팀 내 에러 대응 프로세스 정립까지 한 이야기를 써보고자한다. 1편은 당시 내가 짧은시간에 한꺼번에 겪었던 ..
·💤 RxJava
구독시점과 발행시점에 주의해서 Hot & Cold Observable에 대해 살펴보자. 1. Cold Observable Cold Observable은 구독시에 데이터 발행을 시작한다. 옵저버가 구독할 때마다 새로운 데이터 스트림을 시작하고 처음부터 데이터를 방출한다. 이것은 옵저버가 Cold Observable을 구독할 때마다 독립적인 데이터 스트림을 생성하고 발행하는 것을 의미한다. 아래의 예시는 interval 연산자를 이용하여 1초마다 아이템을 발행하는 Cold Observable 이다. 아래는 두 개의 구독자가 있다. 첫 번째 구독자가 구독을 시작하고 3초후 두 번째 구독자가 구독을 시작한다. val ob = Observable.interval(1, TimeUnit.SECONDS) ob.subs..
·💤 RxJava
RxJava2부터는 다양한 타입의 Observable을 사용할 수 있다. Observable과 Single은 RxJava 1버전부터 존재했고 Maybe와 Completable은 그 이후에 등장했다. 때문에 현재 Rx 공식문서에도 Observable과 Single 타입만 설명이 있다. 필자도 사실상 Observable 원형 그대로 먼저 실무에서 사용한 것이 아니라 이렇게 변형된 타입들부터 익힌 경우이다. Single, Maybe Completable 세 가지에 대해 다뤄보고자 한다. Observable can emit multiple items Single, Maybe and Completable are one or no emission of items. Single it always either emit..
·💤 RxJava
0. Observable, 그래서 어떻게 쓰이는데? Observable은 다양한 종류의 이벤트나 데이터를 비동기적으로 방출할 수 있는 객체이다. Observable은 데이터 스트림을 나타내며, 이 Observable이 방출하는 이벤트나 데이터는 다양할 수 있는데 어떤 경우에 쓰이는지 살펴보자. 버튼 클릭 이벤트: 사용자가 화면의 버튼을 클릭할 때 마다 Observable은 클릭 이벤트를 방출할 수 있다. 네트워크 요청 결과: 네트워크 요청을 통해 데이터를 받아올 때, Observable은 이 데이터를 방출할 수 있다. 비동기적인 HTTP 요청과 같은 작업에 유용하다. 타이머 또는 주기적인 작업: 일정 시간 간격으로 이벤트를 방출하는 Observable을 생성할 수 있다. 예를 들어, 1초마다 현재 시간을..
·🐸 Android
0. RecyclerView에서 Data Set을 하는 방법들 RecyclerView의 data set의 변경방식에 관해서는 여러 메서드들과 제공하는 클래스가 있다. DiffUtil이 만능인지 그렇다면 정확히 어떤 면에서 만능인지, 그렇지 않다면 그 외의 것들 중에서는 어떤 것을 써야 효율적이고 적재적소에 쓰는 것이 맞는지 생각해보는 글이 되겠다. 1. DiffUtil은 Infinite Scroll에 맞는 방식인가? first items convert to second items 스크롤을 하면서 다음 데이터를 계속해서 추가해야하는 무한 스크롤에서 DiffUtil을 사용한다면 기존에 호출한 20개의 아이템에 다시 20개를 추가한 40개의 새 아이템 리스트를 DiffUtil 함수가 포함된 데이터 업데이트 메..
·💤 RxJava
subscribe 이후 onError로 빠지는 에러를 핸들링하는 중 다시 API 호출을 할 경우가 생겨 onError 안에서 다시 구독을 한 경우가 생겼다. 이 경우 괜찮은 처리일까? stackoverflow 의 답변을 보고 다시 한 번 reactive programming 그리고 functional programming 의 원리 원칙을 기억하기 위해 남기는 글 it is not good to call a subscribe inside a subscribe. Why? Well because this is not how functional programming is supposed to work. You're not thinking functionally you're thinking procedurally..
·🐸 Android
0. IntroRx에서 제공하는 스레드(AndroidSchedulers.MainThread와 같은 편한 그 무언가...)를 자연스럽고 편하게 사용하고 있을 찰나, 익숙함에 속지 않지 위해 정리하고자 하는 글. 운영체제에서 말하는 process와 thread부터 시작한다. 1. ProcessProcess: An instance of a program in execution 프로세스(Process): 실행중인 프로그램 운영체제 위에서 연속적으로 실행되고 있는 프로그램을 의미한다. 프로그램은 실행할 수 있는 물리적인 파일을 말하는 것이고, 우리가 이 프로그램을 실행시키면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 말은 즉 메모리에 적재된다는 뜻이다. 인텔리제이도 실행하고 카톡도 실행하고 구글 브라우저..
안드로보이
'Android' 태그의 글 목록