Flutter Testflight Push Notifications Entitlement

Flutter TestFlight 빌드 오류: Push Notifications 엔트리포인트 문제

Flutter 앱을 TestFlight에 처음 올려보면서 겪은 빌드 오류와 해결 과정을 정리한다. 오류 상황 flutter build ipa --release 후 xcrun altool로 업로드를 시도하자 업로드 자체가 아니라 빌드 단계에서 Xcode 아카이브가 실패했다. error: Provisioning profile "iOS Team Provisioning Profile: *" doesn't include the aps-environment entitlement. 업로드 커맨드: xcrun altool --upload-app \ --type ios \ --file "build/ios/ipa/app.ipa" \ --username "$APPLE_ID" \ --password "$APPLE_APP_PASSWORD" 원인 ios/Runner/Runner.entitlements 파일에 아래 항목이 들어가 있었다. <key>aps-environment</key> <string>production</string> 이 키는 Push Notifications 기능을 활성화한 Provisioning Profile에서만 허용된다. Wildcard(*) 프로비저닝 프로파일은 Push Notifications을 지원하지 않기 때문에 아카이브 시점에 충돌이 발생한다. ...

2025-06-08 · 2분 소요 · Seunghan
Flutter Google Signin Ios Setup

Flutter Google Sign-In iOS 설정: GoogleService-Info.plist CLIENT_ID 누락 문제

Flutter 앱에서 google_sign_in 패키지로 Google 로그인을 구현했는데 iOS에서만 동작하지 않는 경우, GoogleService-Info.plist에 CLIENT_ID가 없는 게 원인인 경우가 많다. 문제 Android에서는 Google 로그인이 잘 되는데 iOS에서는 로그인 창이 뜨지 않거나 에러가 발생한다. Firebase 콘솔에서 iOS 앱을 등록하고 GoogleService-Info.plist를 다운로드해서 프로젝트에 추가했지만, 기본 다운로드 파일에는 CLIENT_ID가 포함되지 않는 경우가 있다. GoogleService-Info.plist에 CLIENT_ID 추가 1. iOS OAuth 클라이언트 확인 Google Cloud Console → API 및 서비스 → 사용자 인증 정보로 이동한다. Firebase 프로젝트를 생성하면 자동으로 iOS용 OAuth 클라이언트가 생성되어 있다. 클라이언트 ID 형식은 아래와 같다. ...

2025-06-04 · 2분 소요 · Seunghan
Dart Api Integration

DART Open API 연동 삽질기 (Rails + Flutter)

DART Open API를 Rails 백엔드에 연동하면서 겪은 과정을 정리한다. 공시 모니터링, 감사의견, 지배구조, 재무지표, 지분공시 5개 영역을 구현했고 각 단계마다 삽질이 있었다. 구현 구조 각 데이터 유형마다 모델과 ActiveJob을 하나씩 만들었다. Job은 DART API를 호출해서 upsert_all로 DB에 넣는 단순한 구조다. DartCorpCodeSyncJob → dart_companies (기업 마스터) DartDisclosureSyncJob → dart_disclosures (공시 목록) DartMajorEventSyncJob → dart_major_events (상장폐지 트리거 이벤트 — DS001) DartAuditOpinionSyncJob → dart_audit_opinions (감사의견 — DS002/DS003) DartGovernanceSyncJob → dart_executives / dart_major_shareholders (DS004/DS005) DartFinancialIndexSyncJob → dart_financial_indexes (fnlttSinglAcntAll) DartEquityReportSyncJob → dart_equity_reports (지분공시) 삽질 1: upsert_all + update_only + updated_at 중복 가장 먼저 터진 오류. ...

2025-06-01 · 5분 소요 · Seunghan
Hello World

Hello World — seunghan.xyz 블로그를 시작합니다

안녕하세요, 개발자 승한입니다. seunghan.xyz 기술 블로그를 시작합니다. 이 블로그는 제가 개발하면서 마주친 문제와 해결 과정을 기록하는 공간입니다. 완성된 지식보다는 실제 삽질 경험과 그 과정에서 배운 것들을 솔직하게 남기려 합니다. 이 블로그를 시작한 이유 개발하다 보면 에러 하나를 해결하는 데 몇 시간씩 걸리는 일이 많습니다. 구글링을 해도 정확히 맞는 답이 없고, Stack Overflow의 답변은 버전이 달라 적용이 안 되는 경우도 흔합니다. 그렇게 해결한 문제들을 그냥 잊어버리는 게 아깝다는 생각이 들었습니다. 나중에 같은 문제를 다시 만났을 때를 위해서, 그리고 비슷한 상황에 처한 다른 개발자에게 조금이나마 도움이 되길 바라며 기록을 시작합니다. ...

2025-01-01 · 2분 소요 · Seunghan
개인정보처리방침 문의