Programming(201)
-
Sign in with Apple: iOS에서는 실패하는데 Android/Web에서는 성공하는 경우?
Flutter로 앱을 개발하다 보면 소셜 로그인 기능은 거의 필수적으로 구현하게 됩니다. 그중에서도 'Sign in with Apple'은 iOS 사용자들에게 편리한 경험을 제공하는 중요한 기능이죠. 그런데 이상하게도 Android나 Web 환경에서는 잘 동작하던 Apple Sign In이 유독 iOS 네이티브 앱에서만 실패하는 경우가 있습니다. Bundle ID가 변경되지 않았다면, 백엔드의 Apple ID 토큰 검증 로직에 있을 가능성이 높습니다! 특히, JWT(JSON Web Token)의 aud (Audience) 클레임 검증 방식이 문제의 핵심일 수 있습니다. 이 글에서는 Flutter 앱에서 Apple Sign In이 실패하는 흔한 원인 중 하나인 aud 클레임 불일치 문제와 그 해결 방법을..
2025.04.09 -
[MacOS] Cursor 0.47 업데이트 이후 채팅창이 안 열리는 경우
CMD+I... CMD+L이었나...? 왜 안 열려? 평소대로 Cursor를 실행시키고 채팅창을 열려는 찰나, 뭐가 문제인지 채팅창이 열리지 않는다. 어쩔 수 없이 0.46버전으로 다운그레이드하고나니 잘 되기는 하는데, 다음날 아침 다시 Cursor를 실행하니 자동으로 업데이트되는 바람에 또 다시 채팅창이 열리지 않는다. 이럴 줄 알고 0.46버전 설치파일을 지우지 않았지... 만, 매일 아침 0.46으로 설치하자니 그것도 좀 그렇다. 그렇다고 자동 업데이트를 꺼놓자니, 옵션이 어딨는지도 모르겠고 업데이트하지 못한다는 것도 좀 그렇고.나만 겪는 문제는 아니었나봄https://forum.cursor.com/t/bug-on-cursor-0-47-x-chat-tab-not-opening/65412/7 Bug..
2025.03.20 -
[Flutter] 때때로 생성자에서 비동기 요청을 하게되면, 비동기 요청이 실행되기 전에 dispose()가 호출될 수도 있다.
문제상황 ListView에 표시되는 ListViewItem은 필요한 데이터를 요청하기 위해 2~3개의 API를 순차적으로 조회해야했다. 문제는 사용자가 리스트를 스크롤할 경우, 요청하는 API의 수가 기하급수적으로 늘어난다는 것. 이러한 문제를 막기 위해서 스케쥴러를 구현하고, VisibilityDetector를 사용해 ListViewItem이 더 이상 화면에서 사라지면 API 요청을 취소하도록 작성했다. ListViewItem이 dispose를 호출할 때 역시 API 요청을 취소하도록 작성했다. 실제로 스크롤을 내리다보면 ListViewItem은 생성자를 호출하는 시점에 API 요청을 스케쥴링을 하고, ListViewItem이 더 이상 렌더링되지 않는 시점에는 스케쥴링한 API 요청을 취소하고 ..
2025.03.18 -
[Python] AIOAPNS를 사용한 APNs 푸시 메시지 전송
왜 FCM을 사용하지 않고 APNs를 사용하게 됐는가? AIOAPNS 패키지를 사용해서 APNs로 푸시 메시지를 발송 기능을 구현해야 할 일이 생겼다. 일반적인 경우 푸시 메시지를 발송할 일이 있다면 FCM을 사용해서 iOS/안드로이드 양쪽으로 푸시 메시지를 발송하게 되는데, 이번에는 FCM 토큰 유효기간으로 인한 의구심이 들었다. 파이어베이스 문서에 명시되어있는 비활성 토큰은 다음과 같다. 270일간 활동이 없으면 만료된 토큰으로 간주한다는 얘기인데, 이 '활동'이 푸시 메시지를 수신한 것을 의미하는지, 아니면 푸시 메시지를 수신한 이후 사용자가 아무런 반응을 보이지 않은 것인지 분명하지 않다. 비활성 등록 토큰은 FCM에 1개월 넘게 연결되지 않은 비활성 기기와 연결된 토큰입니다. 시간이 지날수록 ..
2025.02.24 -
[Python] PyFCM을 사용한 Push Notification 전송시 예외 처리를 사용한 FCM 토큰 관리
https://github.com/olucurious/PyFCM GitHub - olucurious/PyFCM: Python client for FCM - Firebase Cloud Messaging (Android, iOS and Web)Python client for FCM - Firebase Cloud Messaging (Android, iOS and Web) - olucurious/PyFCMgithub.com PyFCM을 사용해서 Push Notification을 전송하도록 했는데, PyFCM은 문서화가 잘 되어있지 않은건지, 아니면 언어 특성상 알아서 잘 쓰면 되는건지 에러 관련해서 처리하는 방법을 찾아볼 수가 없었다. Python을 사용한 Firebase Cloud Message를 찾아보면..
2025.02.18 -
[Flutter] 미세 팁 - 앱스토어에 iOS용 앱을 출시하는 경우, 다양한 기기의 스크린 샷 준비하기
iOS용 앱을 앱스토어에 출시하기 위해서는 다양한 기기의 스크린샷을 캡쳐해야한다. 애석하게도 개중에는 반드시 추가해야하는 스크린샷이 있는데, 앱을 등록하는 시기에 맞춰서 등록해야하는 스크린샷 크기가 미묘하게 변화한다. 예를 들어 이 글을 작성하는 2025년 1월 31일을 기준으로, iPhone 16 Pro Max 화면 사이즈인 6.9인치 디스플레이가 옵션이고 iPhone XS Pro Max 화면 사이즈인 6.5인치 디스플레이가 필수 사양이었다. 만약 아이패드를 지원한다면, 13인치 디스플레이 기준으로 촬영한 스크린샷이 첨부되어야한다. 물론 게임을 비롯해 다양한 업체에서 출시한 앱을 살펴보면, 필수 기기에서 캡쳐한 스크린샷이 동봉되어있긴 하지만 마케팅을 위해 다양한 문구나 이미지가 포함되어있는 것을 볼 수..
2025.01.31