Flutter Ios Signin Firebase Setup

TestFlight 빌드에서 Google/Apple 로그인 둘 다 실패하는 이유

TestFlight 빌드에서 Google 로그인, Apple 로그인 둘 다 실패했다. 시뮬레이터에서는 잘 됐는데 TestFlight에서만 터지는 케이스다. 원인 1: GoogleService-Info.plist에 CLIENT_ID 누락 Firebase Console에서 iOS 앱을 처음 등록할 때 GoogleService-Info.plist를 다운받으면 기본적으로 CLIENT_ID와 REVERSED_CLIENT_ID가 포함되어 있다. 그런데 Google Sign-In을 Firebase에서 활성화하기 전에 다운받으면 이 키들이 빠진 채로 생성된다. 확인 방법: grep -A1 "CLIENT_ID\|REVERSED_CLIENT_ID" ios/Runner/GoogleService-Info.plist 아무것도 안 나오면 키가 없는 것. 왜 문제인가 iOS에서 Google Sign-In은 OAuth 콜백을 받기 위해 앱에 URL Scheme이 등록되어 있어야 한다. 이 URL Scheme이 바로 REVERSED_CLIENT_ID 값이다. 값이 없으니 Info.plist에 Scheme 등록도 못 하고, 결과적으로 Google 로그인 창에서 인증 후 앱으로 돌아오지 못한다. ...

2025-08-03 · 3분 소요 · Seunghan
Flutter Icloud Storage Sync Ios Setup

Flutter icloud_storage_sync iOS 설정 완전 가이드

icloud_storage_sync 패키지는 코드만 추가한다고 되지 않는다. iOS 실기기에서 동작하려면 세 가지 설정이 모두 맞아야 한다. 1. Runner.entitlements ios/Runner/Runner.entitlements 파일에 iCloud 관련 키를 추가한다. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.icloud-services</key> <array> <string>CloudDocuments</string> </array> <key>com.apple.developer.ubiquity-container-identifiers</key> <array> <string>iCloud.$(CFBundleIdentifier)</string> </array> </dict> </plist> $(CFBundleIdentifier)는 빌드 시 Info.plist의 번들 ID로 자동 치환된다. 2. Xcode Capability 추가 entitlements 파일만 수정하면 Apple Developer Portal의 App ID와 동기화되지 않는다. Xcode에서 직접 Capability를 추가해야 한다. ...

2025-07-30 · 2분 소요 · Seunghan
Flutter Google Signin Cocoapods Gtmsessionfetcher Conflict

Flutter google_sign_in 추가 후 CocoaPods GTMSessionFetcher 버전 충돌 해결

Flutter 앱에 google_sign_in 패키지를 추가하고 flutter build ipa를 실행했더니 CocoaPods 단계에서 빌드가 실패했다. 에러 메시지 [!] CocoaPods could not find compatible versions for pod "GTMSessionFetcher/Core": In snapshot (Podfile.lock): GTMSessionFetcher/Core (< 5.0, = 4.5.0, >= 3.4) In Podfile: google_sign_in_ios was resolved to 0.0.1, which depends on GoogleSignIn (~> 8.0) was resolved to 8.0.0, which depends on GTMSessionFetcher/Core (~> 3.3) 핵심은 Podfile.lock에 고정된 GTMSessionFetcher 버전(4.5.0)과 google_sign_in이 요구하는 버전(~> 3.3)이 충돌한다는 것이다. 원인 기존 프로젝트에 Firebase 관련 Pod들이 이미 설치되어 있으면 Podfile.lock에 GTMSessionFetcher 버전이 고정된다. 새로 추가한 google_sign_in 패키지의 네이티브 의존성인 GoogleSignIn SDK는 GTMSessionFetcher/Core ~> 3.3을 요구하는데, lock 파일에 잡힌 버전과 호환되지 않으면 충돌이 발생한다. ...

2025-07-27 · 2분 소요 · Seunghan
Flutter Dead Ui Fix Xcode26 Widget Bug

Flutter 미구현 UI 컴포넌트 연결 + Xcode 26 베타 WidgetKit 설치 버그 우회

Flutter 앱 작업 중 두 가지 문제를 연달아 처리했다. 하나는 UI 차원의 문제 — onTap: () {} 로 껍데기만 있는 컴포넌트들을 실제로 연결하는 작업. 다른 하나는 Xcode 26.2 베타에서 시뮬레이터에 앱을 설치하면 익스텐션 때문에 앱 자체가 설치되지 않는 문제다. 1. 동작하지 않는 UI 컴포넌트 연결 Flutter 개발 중 흔히 발생하는 상황: 화면은 다 만들어졌는데 버튼에 onPressed: () {}, 카드에 onTap: () {}만 달려 있고 실제 동작이 없는 상태. 패턴별 정리 알림 벨 아이콘 ...

2025-07-16 · 4분 소요 · Seunghan
Flutter Dart Define Api Url Testflight

Flutter TestFlight 빌드에서 API URL이 localhost로 고정되는 문제

Flutter 앱을 TestFlight에 올렸는데 실기기에서 모든 API 요청이 실패하는 경우, --dart-define으로 API URL이 주입되지 않아서 앱이 localhost로 요청을 보내고 있는 게 원인일 수 있다. 증상 시뮬레이터에서는 정상 동작 (로컬 서버에 연결되니까) TestFlight 빌드(실기기)에서는 로그인, API 호출 모두 실패 서버 로그에 해당 요청이 아예 안 찍힘 → 클라이언트가 서버에 요청 자체를 안 하고 있음 원인 Flutter에서 환경별 API URL을 --dart-define으로 주입받는 패턴을 쓰는 경우, 빌드 명령에 이 인자를 빠뜨리면 코드 내 기본값이 사용된다. ...

2025-07-13 · 2분 소요 · Seunghan
Firebase Android Sha1 Ios Apns Complete Setup

Firebase Phone Auth 플랫폼 설정 완전 정복 - Android SHA-1, iOS APNs

Firebase 전화 인증을 붙이고 에뮬레이터에서는 되는데 실기기에서 안 된다면, 대부분 플랫폼별 추가 설정이 빠진 것이다. Android와 iOS 각각 필요한 설정을 정리한다. Android: SHA-1 지문 등록 Firebase Phone Auth는 Android에서 Play Integrity API를 사용한다. 이 때문에 앱의 서명 키 지문(SHA-1)을 Firebase에 등록해야 한다. 없으면 인증 요청 자체가 실패한다. 1. 키스토어에서 SHA-1 추출 keytool -list -v \ -keystore android/app/upload-keystore.jks \ -alias upload \ -storepass YOUR_STORE_PASSWORD 출력 예시: SHA1: 64:60:03:0B:00:6F:E2:29:A4:40:DD:E3:44:3A:7D:32:39:2B:6A:42 SHA256: 24:83:18:41:D6:9A:E5:84:26:71:8E:A2:... key.properties 파일이 있다면 비밀번호를 거기서 확인한다. ...

2025-06-29 · 3분 소요 · Seunghan
Ios Codesign Testflight Full Setup

iOS 배포 인증서 전체 세팅: Distribution Cert → APNs → Provisioning Profile → TestFlight

Flutter 앱을 TestFlight에 올리는 과정에서 코드 서명 관련 설정을 처음부터 다시 잡으면서 정리한 내용이다. Xcode 자동 서명이 아닌 수동 + App Store Connect API Key 방식으로 진행했다. 전체 흐름 [1] Distribution Certificate 발급 [2] APNs Certificate 발급 (CSR 생성 필요) [3] App ID에 Push Notifications 활성화 [4] Provisioning Profile 생성 (App Store, Push 포함) [5] xcodebuild archive + export (API Key 인증) [6] xcrun altool로 TestFlight 업로드 1. Distribution Certificate Apple Developer → Certificates → + → Apple Distribution 선택. ...

2025-06-18 · 4분 소요 · Seunghan
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
개인정보처리방침 문의