전체 글
팝지 | 팝업지도 개인정보 처리방침
1. 개인정보의 처리 목적 (‘https://blackmanta.tistory.com/’이하 ‘댕글링포인터’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다.- 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등2. 개인정보의 처리 및 보유 기간① (‘https://blackmanta.tistory.com/’이하 ‘댕글링포인터’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다.② 구체적인 개인정보 처리 및 보유 기간은 다음과..
멜론박스 개인정보처리방침
1. 개인정보의 처리 목적 (‘https://blackmanta.tistory.com/’이하 ‘댕글링포인터’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간 ① (‘https://blackmanta.tistory.com/’이하 ‘댕글링포인터’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다. ② 구체적인 개인정보 처리 및 보유 기간은..
액티비티 상태저장의 중요성
안드로이드 공식문서 중 페이지에 이런 말이있다. 결과를 얻기 위해 활동을 시작할 때, 메모리 부족으로 인해 프로세스와 활동이 소멸될 수 있습니다(특히, 카메라 사용과 같이 메모리를 많이 사용하는 작업의 경우 소멸 확률이 매우 높음). 이것을 그냥 넘어가면 카메라로 사진을 찍은 뒤 제출하면 앱이 종료된다는 CS를 종종 만나게될 수 있다. 처음엔 원인을 몰라 코드를 살펴보고 테스트도 여러번해보았지만 앱이 종료되는 경우를 재현할 수 없었다. 결론은 사용자의 핸드폰이 메모리 부족상태였던 것이다. 때문에 카메라앱에서 MainActivity로 돌아왔지만 MainActivity는 메모리 부족으로 이미 소멸된 상태였기 때문에 재생성되게된다. 이 과정에서 상태저장 처리를 해놓지 않았다면 MainActivity는 적절한 ..
딥링크 구현시 intentfilter 설정 주의사항
기존에 data 태그를 이렇게 설정되어있어 manta 스킴의 url은 모두 지원했지만 추가로 이렇게 data를 설정하면 1. manta://www.naver.com 2. https://www.naver.com 네이버 네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요 www.naver.com 이렇게 두가지 경우만을 지원한다. 즉, manta 스킴을 모두 실행하는게 아니라 저 두가지만 지원할 수 있게된다. 따라서 인텐트 필터를 나눠야한다.
이미지 피커 라이브러리 <뭉치피커> 개발기
회사의 앱이 TedBottomPicker라는 라이브러리를 사용하고 있었다. 하지만 안드로이드11이 나오면서 Scoped storage 대응이 필요해졌고, 자잘한 버그가 있었기에 이참에 이미지피커 라이브러리를 만들기로 했다. 결과물은 여기에서 볼 수 있다. 디자이너가 붙지 않았기에 UI는 그저 TedBottomPicker와 동일하게 만들었다. 만들면서 중요하게 생각한 것은 두가지였다. 1. Scoped Storage 대응 2. onActivityResult 함수 대신 Activity Result Api의 registerForActivityResult 를 사용하기 PhotoExt.kt 파일을 보자. 1. 카메라로 사진을 찍은 후 사진을 저장할 경로 얻기 사진을 저장할 경로를 얻을때, Android 11부터 ..
딥링크, 앱링크, 디퍼드 딥링크, 다이나믹링크와 광고의 연결
1. 딥링크 딥링크는 웹에서의 링크처럼, 링크를 클릭시 앱으로 이동하는 링크를 말한다. 딥링크는 앱의 매니페스트에 인텐트 필터를 설정하는 것으로 구현할 수 있다. 이렇게 하면 https 스키마에 호스트가 manta.com인 링크로 이 앱을 열 수 있다. 즉, https://manta.com 이라는 링크를 열 경우, 앱이 핸드폰에 설치되어있으면 앱이 열린다. 하지만 https://manta.com 은 브라우저 앱도 열 수 있다. 브라우저앱은 https 스키마를 가진 링크를 열 수 있기 때문이다. 때문에 실제로 https://manta.com 을 클릭할 경우 앱 선택기에 내 앱과 브라우저 앱 중 하나를 선택하라는 선택 다이어로그가 뜬다. 2. 앱링크 만약 내가 그 다이어로그를 띄우고 싶지 않고, 바로 내 앱..
안드로이드 라이브러리 만들때 유의사항
1. 아이콘, 앱 이름 등을 삭제하는 것이 좋다. 만약 라이브러리를 사용하는 앱의 아이콘 이름과 라이브러리에 있는 아이콘 파일의 이름이 같다면 앱 아이콘이 라이브러리의 것으로 덮여씌워질 수 있다. 앱 이름도 마찬가지다. 이는 매니페스트 병합 규칙 마커를 사용한다고 해도 마찬가지다. 마찬가지의 이유로 라이브러리에서 사용하는 컬러, 테마 같은 리소스 이름은 고유해야한다. 패키지 이름의 일부를 이름에 적어넣도록 하자. 2. 매니페스트 병합을 신경쓰자 라이브러리를 쓴다는 것은 앱이 하나 이상의 매니페스트파일을 가지게 됨을 의미한다. 따라서 매니페스트 병합에 관한 규칙을 숙지할 필요가 있다. 그렇지 않으면 라이브브러리의 매니페스트 속성이 앱의 매니페스트 속성을 덮어씌워버릴 수가 있다. 다중 manifest 파일 ..
사내 카페 주문앱 개발기(1): 클린아키텍쳐
최근 이직한 회사에서 사내 카페 주문앱을 만들게 되었다. 이름은 댕댕이 바리스타 사용자앱. 경력을 시작하고 나서 처음으로 밑바닥부터 만드는 신규 프로젝트를 맡게된 것이다. 일단 구조를 짜자. 사내보안상 코드를 공개 할 수 없어 내 깃허브에 있는 비슷한 구조의 프로젝트를 가져와보았다. 전체코드는 여기서 볼 수 있다. 이렇게 클린아키텍쳐로 짰다. 클린아키텍쳐에서는 앱의 계층을 Presentation, domain, data로 나눈다. Presentation은 Activity, Fragment 같은 UI를 담당하고 domain은 앱의 유스케이스를 정의하고 data는 외부환경으로부터 데이터를 얻는다. 나누는 이유는 한가지 변경사항이 모든 곳에 영향을 끼치지 않도록 하기 위해서이다. 예를들어 서버와 API 통신을..