앱 설정은 타깃 빌드 설정 → EcoGuard/Resources/Info.plist($(VAR))로 들어간다. 모두 앱 번들에 그대로 들어가므로 비밀 값(dataGSM client secret 등)은 넣지 않는다.
| 빌드 설정 | Info.plist 키 | 값 |
|---|---|---|
ECO_API_HOST |
EcoAPIBaseURL (https:// + 값) |
ecoguard.https.gsmsv.site |
ECO_OAUTH_AUTHORIZE_HOST |
EcoOAuthAuthorizeURL (https:// + 값) |
oauth.authorization.datagsm.kr/v1/oauth/authorize |
ECO_OAUTH_CLIENT_ID |
EcoOAuthClientID |
dataGSM 클라이언트 ID(공개 식별자) |
ECO_OAUTH_REDIRECT_URI |
EcoOAuthRedirectURI |
https://ecoguard.https.gsmsv.site/api/v1/auth/callback — dataGSM·서버 등록값과 글자까지 같아야 한다 |
ECO_OAUTH_CALLBACK_URL |
EcoOAuthCallbackURL |
ecoguard://auth/callback — 서버가 인가 코드를 붙여 302로 돌려보내는 앱 주소 |
ECO_WEB_ADMIN_HOST |
EcoWebAdminURL (https:// + 값) |
미정(비우면 교사 안내 화면의 복사·공유 버튼을 숨김) |
- 로그인 흐름: 앱 → dataGSM 인가(
redirect_uri= 서버 콜백) → 서버/api/v1/auth/callback→ 302ecoguard://auth/callback?code&state→ 앱이 state 확인 후POST /api/v1/auth/login. - 커스텀 스킴 콜백은
ASWebAuthenticationSession에 스킴을 넘겨 받으므로CFBundleURLTypes등록이 필요 없다. - 빌드 설정(pbxproj)에서는
https://를 그대로 써도 되지만, xcconfig로 옮기면//부터 주석이 된다. xcconfig에서는https:/$()/host/...처럼 쓴다.
- Xcode: Scheme › Edit Scheme › Run › Arguments › Environment Variables에서
ECO_USE_MOCK(값1)을 체크한다. DEBUG 빌드에서만 동작한다. - 시뮬레이터 명령줄:
SIMCTL_CHILD_ECO_USE_MOCK=1 xcrun simctl launch <기기> com.teamsiru.ecoguard - 테스트 호스트로 실행될 때는 항상 Mock을 써서 실서버·키체인을 건드리지 않는다.
- Mock 상태 고르기(DEBUG):
ECO_MOCK_HOME_SCENARIO·ECO_MOCK_RECRUITMENT_SCENARIO·ECO_MOCK_VERIFICATION_SCENARIO·ECO_MOCK_VERIFICATION_RESULT_SCENARIO에 각 MockScenario케이스 이름(예:excluded,failure)을 넣는다. UI 테스트(EcoGuardUITests)가 이 값으로 화면 상태를 만든다.
- 심사자: 로그인 화면의 로고(또는
환경지킴이)를 2초 길게 누른다 →심사용 로그인창에 전달받은 코드를 입력하고로그인을 누른다. VoiceOver에서는환경지킴이제목의 동작심사용 로그인으로 연다. - 코드는 앱에 들어 있지 않다. 서버
DEMO_ACCOUNT_ENABLED·DEMO_ACCOUNT_AUTH_CODE값을 App Store Connect 심사 메모로만 전달한다. 틀리면 일반 로그인 실패 안내가 뜬다. - 코드는 dataGSM을 거치지 않고
POST /api/v1/auth/login의authCode로 보내며, 이후 흐름(토큰 저장·메인 진입)은 일반 로그인과 같다. Release 빌드에도 들어간다.
- Debug 빌드 로그인 화면 위쪽
화면 둘러보기버튼으로 탭 셸(홈 상태별)·각 흐름·상태 화면을 목록에서 연다. 서버 설정과 상관없이 Mock 저장소만 쓰며, Release 빌드에는 들어가지 않는다(#if DEBUG). - 실행 인자
-ScreenGallery로 앱 시작 때 바로 열고, 항목 ID를 붙이면 그 화면을 연다:xcrun simctl launch <기기> com.teamsiru.ecoguard -ScreenGallery shell.recruiting(ID는ScreenGalleryCatalog.swift). - 항목 화면 오른쪽의
✕버튼(끌어서 옮길 수 있음)이나 화면의 닫기·뒤로 버튼으로 목록에 돌아온다.