전체 글

이것저것 만드는 개발자입니다.
앱 업데이트를 진행하는데 TestFlight에서 아래와 같은 메일을 보내왔다. 내용은 간추리면 다음과 같다. - Apple 필수 API를 사용하는 앱이니 PrivacyInfo 파일로 왜 사용하는지 설명해라. - 안내 메일대로 안하면 2024년 5월 1일부터 문제가 발생한다. 해결 방법은 다음과 같다. 1. XCode를 열고 Runner-Runner 우클릭 File/New/File -> App Privacy 추가 2. PrivacyInfo 파일에 아래 항목 추가 나의 경우는 UserDefaults와 DiskSpace에 해당하는 메일만 받았으니 두가지 항목만 추가해주었다. NSPrivacyTracking NSPrivacyAccessedAPITypes NSPrivacyAccessedAPIType NSPriva..
최근 짬짬히 시간을 내서 만들게 된 스토인 프로젝트에서 PlayStore에 앱 계정 삭제 요구사항에 맞지 않다는 오류와 함께 심사가 거절되는 사건이 있었습니다. 구글 고객센터의 안내 링크는 다음과 같고, 요약하면 아래와 같습니다. 1. Apple의 앱 내 계정 삭제 정책 발표 (22년 1월) 2. Google에서도 Apple을 따라 계정 삭제 정책 발표 (23년 4월) 3. 데이터 삭제 관련 질문 작성 기한 (23년 12월 7일) 4. 정책 규정을 준수하지 않는 경우 시정조치 될 예정 (24년 6월 이후) 계정 삭제 정책의 주요 내용은 다음과 같습니다. 1. 앱 콘텐츠 페이지의 데이터 보안 양식에 "데이터 삭제" 항목 설문 진행해야 한다. 2. 앱에서 계정 생성이 가능한 경우 앱 내에서 계정 및 데이터를..
이번에 소개팅 앱을 개발하면서 인앱결제 기능과 휴대폰 인증과 무료 핸드폰 인증 서비스인 옥토모를 이용하게 되었습니다. (옥토모 서비스는 글의 마지막에 작성해 두었으니 관심 있으신 분들은 참고하시길 바래요) 유저의 핸드폰 문자 메시지를 전송을 이용한 핸드폰 인증 방법이기 때문에 "android.permission.RECEIVE_SMS" 권한이나 "android.permission.SEND_SMS" 권한을 사용하려고 했습니다. 그러던 중에 갑자기 android.permission.QUERY_ALL_PACKAGES 오류가 발생하지 뭡니까? 이게 gradle 버전, key properties, 이런 저런 packages 들을 섞어 쓰다보니 어떤게 원인인지 정확히 파악하지는 못했지만 해결방법을 알아내고 넘어갔더랬..
MapBox를 사용하는 프로젝트를 진행하고 있는 도중 맵박스 위에 점선을 표현하는 기능이 있어 개발했었습니다. 개발 이후 현재까지 잘 사용하고 있었는데 ios 버전 업그레이드 이후 맵 초기화 부분에서 알수 없는 오류로 인해 문제가 발생했지만 관련된 그 어떤 글도 확인할 수 없어 난감했었네요. 문제가 발생하는 코드를 하나씩 확인해 나가면서 MapBox의 초기화 과정에서 문제가 발생한것을 확인하고 원인을 찾던과정에서 아래와 같이 두가지 문제가 있는것을 확인했습니다. 1. line-dasharray의 Parsing 오류 mapController?.addLayer( MAP_LINE_SOURCE_DASH, MAP_LINE_LAYER_DASH, LineLayerProperties( lineColor: Colors...
프로젝트를 진행하다 보면 로그를 찍어봐야 할때가 많습니다. 복잡한 프로젝트에서 로그는 그 쓰임새가 아주 유용합니다. 근데 가끔은 원치 않은 로그가 무수히 많이 찍힐때가 있습니다. 저의 경우에는 "E/FrameEvents(18357): updateAcquireFence: Did not find frame." 라는 의미없는 로그가 아래와 같이 초당 수십개씩 찍히고 있었죠. E/FrameEvents(18357): updateAcquireFence: Did not find frame. E/FrameEvents(18357): updateAcquireFence: Did not find frame. E/FrameEvents(18357): updateAcquireFence: Did not find frame. E/Fr..
앱을 개발하다보면 위 그림과 같이 팝업창에서 Get.back()을 사용해야하는 경우가 있습니다. *Get.back()은 GetX 상태관리 라이브러리를 사용하는것으로 Navigation.pupUntil()을 나타내는 것입니다. 이때 Get.back을 사용하면 팝업창만 닫히고 실제 콘텐츠 검색 페이지가 닫히진 않습니다. 여기서 확인 버튼을 눌렀을때 원하는것은 팝업창과 콘텐츠 검색 페이지가 동시에 닫히는 것이겠죠? 예전 한때는 멋모르고 Get.back을 두번 호출했었습니다만 미관상 보기가 좋지 않더라고요.(팝업창이 닫히고 창이 닫히는게 보입니다) 물론 틀린 방법은 아니지만 좀 더 나은 방법을 알려드리고자 합니다. 바로 Get.back을 사용할 때 closeOverlays 매개변수를 사용하는 것입니다. clos..
항상 까먹는 앱 아이콘 변경하는 방법을 간단하게 정리해보려고 합니다. [사전 준비] 1. 아이콘 이미지 1024x1024 2. 준비된 이미지를 로고로 변환 후 파일 다운로드 https://www.appicon.co/ 사이트에서 1024사이즈의 이미지를 로고로 변환 [Flutter 앱에 적용하기] 1. 다운로드 된 로고 파일을 android 폴더와 ios 폴더에 적용하기 - android : android>app>src>main>res - ios : ios>Runner>Assets.xcassets 2. appstore.png와 playstore.png 파일은 각각의 스토어에 앱 출시할때 로고 아이콘으로 사용 끝
카카오 로그인을 사용하기 위해서는 디버그 키해시와 릴리즈 키해시를 각각 등록해줘야 합니다. PlayStore에 앱을 올리고 심사를 거부당해서 확인해봤더니 릴리즈 키해시 값이 잘못되어 있어서 발생하는 이슈였네요. ㅠ.ㅠ 아래와 같이 릴리즈 키해시를 만드는 방법이 여기저기 보이지만 이 방법으로는 제대로 된 릴리즈 키해시를 얻을수 없었어요. 아래 릴리즈 키해시 생성 방법으로 다시 생성해보세요~ $ keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64 # 릴리즈 키해시 생성 방법 # 1. Google Play Console의 [설정-앱 서명]에 SHA-1 인증서 지문 복사하기 2. Open SSL을 이용하여 SHA-1 인증서 지..
알렉산도대왕
알렉산도대왕의 개발일지