Skip to content

MSG-606 fix: iOS 모션 권한 문구 + 필맵 앱 아이콘 적용, 빌드 번호 3 — ITMS-90683 반려·템플릿 아이콘 대응 - #167

Merged
Ss0Mae merged 2 commits into
developfrom
fix/MSG-606-motion-purpose-string
Sep 25, 2026
Merged

Ss0Mae merged 2 commits into
developfrom
fix/MSG-606-motion-purpose-string

Conversation

@Ss0Mae

@Ss0Mae Ss0Mae commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

개요

첫 업로드 1.0.0 (1)이 App Store Connect 처리에서 반려됐습니다(메일 "Action needed: … has one or more issues", ITMS-90683 Missing purpose string — NSMotionUsageDescription).

원인

MSG-606에서 expo-location 옵션 motionUsagePermission: false로 키를 뺐지만, 앱이 모션을 안 써도 SDK가 CoreMotion API를 참조해 Apple이 문구를 요구합니다.

변경

  • app.config.js — ios.icon(Expo 템플릿 assets/expo.icon, 셰브런) 제거 → 최상위 icon(필맵 격자 심볼 1024·불투명)이 iOS에도 적용. 번들 삭제. buildNumber 3
  • app.config.js — motionUsagePermission에 정직한 문구("…필맵은 모션 데이터를 수집하지 않아요"), ios.buildNumber 1 → 2
  • docs/MOBILE_RUNBOOK.md 7절 — 처리 반려 메일과 이 사례 기록

검증

항목 결과
typecheck · lint · format:check 통과
prebuild 후 Info.plist NSMotionUsageDescription 존재, CFBundleVersion 2
아카이브·재업로드 진행 중 (별도 보고)
codex review 지적 없음

🤖 Generated with Claude Code

첫 업로드(1.0.0 (1))가 App Store Connect 처리에서 반려됐다: NSMotionUsageDescription 누락. MSG-606에서
expo-location의 motionUsagePermission:false로 키를 뺐지만, 앱이 모션을 안 써도 SDK가 CoreMotion API를
참조해 문구가 필수다. 수집하지 않는다는 문구를 넣고 buildNumber 2로 재업로드. 런북 7절에 기록.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@claude

claude Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Claude finished @Ss0Mae's task in 1m 25s —— View job


✅ 코드 리뷰 완료

작업 목록

  • 컨텍스트 파악 (PR diff, CLAUDE.md, MOBILE_RUNBOOK.md 확인)
  • apps/mobile/app.config.js 변경분 리뷰
  • docs/MOBILE_RUNBOOK.md 변경분 리뷰
  • 인라인 코멘트 작성
  • 전체 요약 코멘트 게시 (gh pr comment)

요약: ITMS-90683(모션 권한 문구 누락) 반려 대응 — motionUsagePermission 문구 추가·buildNumber 2로 상향·런북 기록. 원인 분석과 대응이 정확하고 범위도 최소한으로 잘 잡혔습니다. 🟡 인라인 코멘트 1건(apps/mobile/app.config.js L189-191 주석이 아래 변경과 모순 — "모션 키는 넣지 않는다" 문구가 실제로는 채워 넣는 것으로 바뀜) 남겼고, 전체 요약은 별도 코멘트로 게시했습니다.

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit ae32a70.

Comment thread apps/mobile/app.config.js
locationAlwaysAndWhenInUsePermission: false,
motionUsagePermission: false,
motionUsagePermission:
"걸음·이동 감지에는 쓰지 않아요. 지도 라이브러리가 요구하는 항목으로, 필맵은 모션 데이터를 수집하지 않아요.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 권장 — 바로 위 L189-191의 MSG-606 H1 주석("Always·모션 키는 넣지 않는다")이 이 변경으로 모순됩니다. ITMS-90683 반려로 모션 키는 빼는 대신 정직한 문구로 채워야 한다는 게 새 결론이니, 주석도 같이 갱신하면 다음에 이 파일을 읽는 사람이 헷갈리지 않습니다.

예시:

// MSG-606 H1: 위치 권한 문구 — 플러그인 기본값("Allow $(PRODUCT_NAME) to access your location")은
// 목적이 없어 심사 반려 1순위. 앱은 포그라운드 위치만 쓴다(`shared/geolocation.ts`) — Always 키는
// 넣지 않는다. 모션 키는 애초에 빼려 했으나 SDK가 CoreMotion을 참조해 ITMS-90683으로 반려됐다 —
// 정직한 문구로 채워야 한다(motionUsagePermission, MOBILE_RUNBOOK.md 7절 참고).

@claude

claude Bot commented Sep 24, 2026

Copy link
Copy Markdown

🔍 코드 리뷰 요약 (PR #167)

범위: apps/mobile/app.config.js (+3/-2), docs/MOBILE_RUNBOOK.md (+1/-0) — ITMS-90683(NSMotionUsageDescription 누락) 반려 대응, motionUsagePermission 문구 추가 + buildNumber 1→2.

잘한 점

  • 원인 분석이 정확합니다. motionUsagePermission: false로 키를 빼도 지도 SDK가 CoreMotion API를 참조하면 Apple이 문구를 요구한다는 진단과, "모션 데이터를 수집하지 않는다"는 정직한 문구로 대응한 방향이 적절합니다.
  • buildNumber를 "1" → "2"로 올려 재업로드 규칙(docs/MOBILE_RUNBOOK.md 기존 문구 "재제출은 ios.buildNumber만 올린다")을 그대로 따랐습니다. version(1.0.0)은 그대로 둔 것도 맞습니다(같은 마케팅 버전의 처리 반려 재업로드이므로).
  • privacyManifests의 NSPrivacyCollectedDataTypes 목록에 모션 관련 항목이 없는 것도 "모션 데이터를 수집하지 않는다"는 문구와 일관됩니다.
  • MOBILE_RUNBOOK.md 7절에 반려 메일 패턴과 이번 사례를 기록해, 다음에 비슷한 처리 반려가 오면 바로 원인을 찾을 수 있게 한 점이 좋습니다.
  • 변경 범위가 최소(문구 1줄 + 버전 1줄 + 문서 1줄)로, 요구되지 않는 리팩터링이 섞이지 않았습니다.

지적 사항

🟡 권장 — apps/mobile/app.config.js L189-191(인라인 코멘트 참고, L200에 남김): 이번 변경 바로 위에 있는 MSG-606 H1 주석이 "Always·모션 키는 넣지 않는다"라고 돼 있어, 아래에서 motionUsagePermission에 실제 문구를 넣은 것과 모순됩니다. 이 주석만 보고 다음에 수정하는 사람이 다시 false로 되돌릴 위험이 있으니, ITMS-90683 반려로 정책이 바뀐 배경을 반영해 주석도 함께 갱신하는 것을 권장합니다.

기타

  • 로직 오류·성능·보안·React 관련 이슈는 해당 사항 없음(정적 설정값 변경이라 런타임 로직이 없습니다).
  • typecheck/lint/format 재실행은 하지 않았습니다 — PR 본문에 이미 통과 기록이 있고, 변경이 문자열 리터럴 1줄 + 문서 1줄이라 재실행 리스크가 낮다고 판단했습니다. 필요하시면 별도 요청해 주세요.
  • 아카이브·재업로드 실측 결과는 PR 본문에 "별도 보고"로 표시돼 있어, 실제 ASC 처리 통과 여부는 이 리뷰 범위 밖입니다.

View job run
Branch: fix/MSG-606-motion-purpose-string

…번들 제거

ios.icon이 템플릿의 assets/expo.icon(Expo 심볼 셰브런)을 가리켜 App Store Connect 빌드 2의 아이콘이 필맵이
아니었다. 키를 지워 최상위 icon(assets/images/icon.png, 1024·불투명)이 iOS에도 쓰이게 하고 번들을 삭제한다.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Ss0Mae Ss0Mae changed the title MSG-606 fix: iOS 모션 권한 문구를 넣고 빌드 번호를 2로 올린다 — ITMS-90683 반려 대응 MSG-606 fix: iOS 모션 권한 문구 + 필맵 앱 아이콘 적용, 빌드 번호 3 — ITMS-90683 반려·템플릿 아이콘 대응 Sep 24, 2026
@claude

claude Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Claude finished @Ss0Mae's task in 3m 8s —— View job


✅ 코드 리뷰 완료

작업 목록

  • 컨텍스트 파악 (PR diff, CLAUDE.md, MOBILE_RUNBOOK.md 확인)
  • apps/mobile/app.config.js 변경분 리뷰
  • iOS 앱 아이콘 삭제분(assets/expo.icon/*) 리뷰
  • docs/MOBILE_RUNBOOK.md 변경분 리뷰
  • 인라인 코멘트 작성
  • 전체 요약 코멘트 게시 (gh pr comment)

요약: ITMS-90683 모션 권한 문구 대응(빌드 2)에 더해, iOS 아이콘이 Expo 템플릿 셰브런으로 나갔던 것을 필맵 아이콘으로 고친 커밋(빌드 3)까지 리뷰했습니다. 아이콘 수정은 원인 분석·수정 모두 정확하고(직접 1024×1024 불투명 확인), 다른 참조도 안전하게 정리됐습니다. 🟡 인라인 코멘트 1건 — app.config.js L188-190의 MSG-606 H1 주석이 "모션 키는 넣지 않는다"라고 돼 있어 아래 motionUsagePermission 실제 문구와 여전히 모순됩니다(이전 리뷰에서도 지적했으나 이번 푸시에 미반영). 전체 요약은 별도 코멘트로 게시했습니다.

Branch: fix/MSG-606-motion-purpose-string

Comment thread apps/mobile/app.config.js
locationAlwaysAndWhenInUsePermission: false,
motionUsagePermission: false,
motionUsagePermission:
"걸음·이동 감지에는 쓰지 않아요. 지도 라이브러리가 요구하는 항목으로, 필맵은 모션 데이터를 수집하지 않아요.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 권장 (이전 리뷰에서 이미 지적, 이번 푸시에도 미반영) — 바로 위 L188-190의 MSG-606 H1 주석("Always·모션 키는 넣지 않는다")이 이 줄에서 motionUsagePermission에 실제 문구를 채운 것과 여전히 모순됩니다. ITMS-90683 반려로 "모션 키는 아예 안 넣는다"는 정책이 "정직한 문구로 채운다"로 바뀌었으니, 주석도 같이 갱신하는 것을 권장합니다. 그대로 두면 다음에 이 파일을 보는 사람이 주석만 믿고 다시 false로 되돌릴 위험이 있습니다.

예시:

// MSG-606 H1: 위치 권한 문구 — 플러그인 기본값("Allow $(PRODUCT_NAME) to access your location")은
// 목적이 없어 심사 반려 1순위. 앱은 포그라운드 위치만 쓴다(`shared/geolocation.ts`) — Always 키는
// 넣지 않는다. 모션 키는 애초에 빼려 했으나 SDK가 CoreMotion을 참조해 ITMS-90683으로 반려됐다 —
// 정직한 문구로 채워야 한다(motionUsagePermission, MOBILE_RUNBOOK.md 7절 참고).

Fix this →

@claude

claude Bot commented Sep 24, 2026

Copy link
Copy Markdown

🔍 코드 리뷰 요약 (PR #167, 최신 커밋 ae32a70)

범위: 이번 푸시에서 apps/mobile/app.config.js(+3/-3), docs/MOBILE_RUNBOOK.md(+1/-0), apps/mobile/assets/expo.icon/* 삭제(+0/-46) — ITMS-90683(모션 권한 문구 누락) 반려 대응(빌드 2)에 이어, iOS 앱 아이콘이 Expo 템플릿 심볼(assets/expo.icon)로 나갔던 것을 필맵 아이콘(assets/images/icon.png)으로 고치고 빌드 번호를 3으로 올린 커밋이 추가됐습니다.

잘한 점

  • 아이콘 원인 분석과 수정이 정확합니다. ios.icon: "./assets/expo.icon"가 최상위 icon(필맵 마크) 설정을 오버라이드해 App Store Connect 빌드 2의 아이콘이 Expo 템플릿 셰브런으로 나간 것을 확인했고, ios.icon 키를 지워 최상위 icon이 iOS에도 적용되게 했습니다. 직접 확인한 결과 assets/images/icon.png은 1024×1024 RGB(알파 없음)로 Apple 아이콘 요건(불투명)에 맞습니다.
  • 삭제한 assets/expo.icon/*(Expo 기본 .icon liquid-glass 번들)을 레포 전체에서 grep해 봐도 다른 참조가 없어 죽은 코드/에셋 제거가 안전합니다.
  • buildNumber를 1→2→3으로 순차 상향해 MOBILE_RUNBOOK.md의 재제출 규칙("ios.buildNumber만 올린다")을 그대로 따랐고, version(1.0.0)은 유지했습니다.
  • 모션 권한 문구("걸음·이동 감지에는 쓰지 않아요…")는 privacyManifests의 NSPrivacyCollectedDataTypes 목록(모션 항목 없음)과 일관됩니다.
  • MOBILE_RUNBOOK.md 7절에 처리 반려 메일 패턴("Action needed…")과 이번 ITMS-90683 사례를 기록해 재발 시 원인을 바로 찾을 수 있게 한 점이 좋습니다.
  • 변경 범위가 최소(문구/버전 값 + 죽은 에셋 삭제 + 문서 1줄)로, 요구되지 않는 리팩터링이 섞이지 않았습니다.

지적 사항

🟡 권장 (이전 리뷰에서 지적했으나 이번 푸시에도 미반영) — apps/mobile/app.config.js L188-190의 MSG-606 H1 주석이 "Always·모션 키는 넣지 않는다"라고 돼 있어, L198-199에서 motionUsagePermission에 실제 문구를 채운 것과 여전히 모순됩니다. ITMS-90683 반려로 정책이 "모션 키는 아예 안 넣는다" → "정직한 문구로 채운다"로 바뀐 배경을 주석에도 반영해 주세요 (인라인 코멘트에 예시 문구 남김). 그대로 두면 다음에 이 파일을 수정하는 사람이 주석만 보고 다시 false로 되돌릴 위험이 있습니다.

기타 (참고, 추측 포함)

  • 아이콘 교체 커밋(ae32a70)은 PR 본문(모션 문구 대응만 기술)에는 아직 반영돼 있지 않습니다 — 범위가 넓어진 만큼 본문 업데이트를 권장하나, 코드 자체의 결함은 아닙니다.
  • 로직 오류·성능·보안·React 관련 이슈는 해당 사항 없음 — 정적 설정값 변경 + 에셋 삭제라 런타임 로직이 없습니다.
  • typecheck/lint/format 재실행은 하지 않았습니다 — 변경이 문자열/숫자 리터럴 값과 에셋 삭제뿐이라 재실행 리스크가 낮다고 판단했습니다. 필요하시면 별도 요청해 주세요.
  • 아카이브·재업로드 실측(빌드 3의 실제 ASC 처리 통과 여부)은 PR 범위 밖이라 확인하지 못했습니다.

View job run
Branch: fix/MSG-606-motion-purpose-string

@Ss0Mae
Ss0Mae merged commit f5e3ba9 into develop Sep 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant