분류 전체보기
지금한강은 iOS 첫 출시 회고
만드는데에는 얼마 걸리지 않았지만, 리젝받고 해결하는데 일주일 정도 소요 되었다. 안드로이드 출시하는 것에 비해 훨씬 까다로웠다. 현재 완전 MVP 형태라 다음 추가할 기능을 생각해 보았다. 카카오톡으로 공유하기 등 입소문을 빠르게 낼 수 있도록 해보는 것도 좋을것 같다. 광고를 추가해서 광고 수익을 얻어보는 것도 좋을것 같다. 카카오톡 오픈채팅방에서 홍보를 하였으나, 반응은 재각각이었다. 출시를 축하한다는 말도 있었고, 이렇게 간단한 앱을 만든것을 뭘 자랑이냐라는 반응도 있었다. (출시하고 일주일이 안되서 날씨 부분 29위를 달성했다 ㅎㅎ) +(수정 : 한달뒤에 8위를 달성했다. 생각보다 반응이 좋아 계속 업데이트를 해야하는데, 여력이 안되어 걱정이다.)
iOS 리젝 해결기 - 0
사이드 프로젝트를 진행하면서 1.0.0 최초 버전에서 총 리젝사유가 3개가 발생했다. 지침 2.1-필요한 정보 앱 검토를 완료하기를 기대하고 있지만 계속하려면 더 많은 정보가 필요합니다. 특히 앱에서 AppTrackingTransparency 프레임 워크를 사용하는 것으로 확인되었지만 관련 AppTrackingTransparency 권한 요청을 찾을 수 없습니다. 현재 AppTrackingTransparency를 구현할 필요는 없지만 앱에서 프레임 워크를 감지 할 때 구현이 가이드 라인을 준수하는지 확인합니다. 다음 단계 앱이 AppTrackingTransparency를 통합하는 경우 앱에서 AppTrackingTransparency 권한 요청을 찾을 수있는 위치를 지정하십시오. 앱이 AppTrackin..
지금한강은 개인정보처리방침
('https://github.com/minseongkimdev'이하 '지금한강은')은(는) 「개인정보 보호법」 제30조에 따라 정부주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2021년 1월 1부터 적용됩니다. 제1조(개인정보의 처리 목적) ('https://github.com/minseongkimdev'이하 '지금한강은')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 겨우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 1. 홈페이지..
안드로이드 WorkManager
안드로이드에서 백그라운드 작업을 다루기 위해 여러 선택지들이 있따. Firebase JobDispatcher, Job Scheduler, Alarm Manager, Broadcast Receiver 등이 있다. 하지만 AccessToken등을 리프레시 할 때는 앱이나 디바이스가 재시작 되어도, 태스크의 실행을 보장한다. 작업은 Worker 클래스를 통해서 정의한다. doWork() 메서드는 WorkManager에서 제공하는 백그라운드 스레드에서 비동기적으로 실행된다. doWork()에서 반환된 Result는 작업의 성공 여부를 알려주며 실패한 경우 WorkManager 서비스에 작업을 재시도해야 하는지 알려줍니다. Result.success(): 작업이 성공적으로 완료되었습니다. Result.failur..
자바 소켓
자바에서 TCP 통신을 하려면 Socket 클래스를 사용하면 된다. java.net 패키지에는 네트워크 관련 클래스들이 선언되어 있다. 이 소켓 클래스는 데이터를 보내는 쪽에서 객체를 생성하여 사용한다. 데이터를 받는 쪽에서 클라 요청을 받으면 요청에 대한 소켓 객체를 생성하여 데이터를 처리한다. 이 소켓 클래스는 서버 쪽이든 클라쪽이든 원격에 있는 장비와의 연결 상태를 보관하고 있다. 서버에서는 ServerSocket 이라는 클래스를 사용하여 데이터를 받는다. 이 클래스는 별도의 new 키워드가 아닌 ServerSocket 클래스에서 제공하는 메소드에서 클라 요청이 생기면 Socket 객체를 생성해서 전달해준다. ServerSocket() -> 서버 소켓 객체만 생성한다. ServerSocket(int..
안드로이드 액티비티란?
액티비티는 사용자에게 UI가 있는 화면을 제공하는 앱 컴포넌트이다. 화면에 출력되는 UI 구성의 가장 기본이 되는 요소애플리케이션 구성 요소로서, 일을 하기 위해 상호작용할 수 있는 화면을 제공하고 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있다. 이 창은 일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도 있다. onCreate(Bundle savedInstanceState) - 이 메서드는 액티비티 인스턴스가 최초로 생성될 때 호출되며, 대부분의 초기화 작업을 진행한다. 메서드의 매개변수(인자)는 동적 상태 정보를 포함할 수 있는 Bundle 객체가 전달된다. 그리고 동적 상태 정보는 직전에 생성되었다가 소멸된 동일한 액티비티의 인스턴스로부터 받으..
자바 컬렉션 Map
자바에서 MAp은 키과 밸류로 이뤄져 있다. Map에서 다른 데이터와 구분하기 위한 값의 이름을 키라고 한다. 키과 밸류가 1:1로 저장된다., 그런데 이 키는 해당 Map에서 중복되지 않는다. 만약 키가 다르고, 값이 동일하다면 맵에서는 다른 것으로 간주한다. 모든 데이터는 키와 밸류가 존재한다. 키가 없이 값만 저장될 수 없다. 값 없이 키만 저장할 수도 없다. 키는 해당 Map에서 고유해야만 한다 값은 Map에서 중복되어도 전혀 상관 없다. Map은 java.util패키지의 Map이라는 인터페이스로 선언되어 있고, 구현해 놓은 클래스들도 많이 있다. put : 데이터를 넣을 때 get : 데이터를 확인할 때 remove : 데이터를 삭제할 때 Map을 구현한 주요 클래스들을 살펴보자 Map인터페이스..
자바 문자열 String
자바에서 String의 비중은 매우 크다 팀에서 운영하는 시스템ㄱ솨 다른 팀에서 운영하는 시스템의 장애를 진단하고, 성능 튜닝 및 측정을 하는 것이다. 그런데, 진단 작업을 하면서 어떤 객체가 가장 많이 생성되는지 점검하는 경우가 있다. 그럴 때 보면 String 관련 객체는 항상 탑 5안에 든다
자바 Nested Class 내부 클래스
자바에서는 클래스 안에 클래스가 들어갈 수 있다. 이러한 클래스를 Nested Class 라고 부른다 존재하는 가장 큰 이유는 코드를 간결하게 쓰기 위함이다 UI처리를 할 때 사용자의 입력이나 외부의 이벤트에 대한 처리를 하는 곳에서 가장 많이 사용된다. 이 부분에서 Nested 클래스가 없으면 코드가 매우 복잡해진다 Nested 클래스는 선언한 방법에 따라 Static nested, inner 클래스로 나뉜다 Static nested 크래스와 내부 클래스의 차이는 static으로 선언되어 있는가 여부이다. 내부 클래스는 다시 두가지로 나뉘는데, 이름이 있는 내부 클래스는 로컬 내붘 클래스라고 하고, 이름이 없는 클래ㅑ스를 익명 내부 클래스라고 부른다. Nested 클래스를 사용할 때 한 곳에서만 사용되..
안드로이드 Work Manager란
현재 회사에서 안드로이드 클라이언트 단에서 OAuth2 JWT관리와, 네트워크 연결 관리 등을 개선해야할 일이 생겼다. 팀원들과 논의 결과 백그라운드에서 처리 하는 방향으로 결정 하였고, Work Manager를 공부하게 되었다. Google에서 2018년 안드로이드 릴리즈로 인해 복잡해진 백그라운드 처리를 해결하기 위해서 출시한 라이브러리이다. Work Manager를 이해하기 위해서는 먼저, 메모리와 기본 백그라운드 솔루션을 이해해야 한다. 1. 안드로이드 메모리 안드로이드가 처음 나왔을 때, 안드로이드 커널은 리눅스 커널을 기반으로 했다. 하지만, 안드로이드와 다른 모든 리눅스 커널 기반 시스템 주요 차이점은 안드로이드에서는 스왑 공간이라는 것이 없다. 리눅스의 스왑공간은 실제 메모리의 양이 가득차..