Skip to content

๐Ÿ”ง [Chore] NearbyInteraction ๊ถŒํ•œ ๋ฌธ๊ตฌ ์ •์ • ยท ์กฐ์ง ํŒ€ App ID ์„œ๋ช… ๋ฐ ์‹ค๊ธฐ๊ธฐ ๊ฒ€์ฆ ์ ˆ์ฐจ ๋ฌธ์„œํ™” (#1241) - #1271

Merged
JEONG-J merged 4 commits into
developfrom
chore/1241
Aug 30, 2026

Conversation

@JEONG-J

@JEONG-J JEONG-J commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

๐Ÿ”— ๊ด€๋ จ ์ด์Šˆ

Closes #1241

โœจ PR ์œ ํ˜•

[Chore] โ€” ๋ฐฐํฌ ์ค€๋น„. ํ”„๋กœ๋•์…˜ ๋™์ž‘ ๋ณ€๊ฒฝ ์—†์Œ(๊ถŒํ•œ ์•ˆ๋‚ด ๋ฌธ๊ตฌ 1๊ฑด ์ •์ • + ๋ฌธ์„œ ์ถ”๊ฐ€).

๐Ÿ“ท ์Šคํฌ๋ฆฐ์ƒท or ์˜์ƒ(UI ๋ณ€๊ฒฝ ์‹œ)

ํ•ด๋‹น ์—†์Œ โ€” ํ™”๋ฉด ๋ณ€๊ฒฝ ์—†์Œ. ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ์œ ์ผํ•œ ๋ณ€ํ™”๋Š” NearbyInteraction ๊ถŒํ•œ ํŒ์—…์˜ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋‹ค.

๋ฌธ๊ตฌ
before ๊ทผ๊ฑฐ๋ฆฌ์—์„œ ์ •ํ™•ํ•œ ๋ช…ํ•จ ๊ตํ™˜์„ ์œ„ํ•ด ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
after ๊ทผ์ฒ˜์— ์žˆ๋Š” ์ƒ๋Œ€ ๊ธฐ๊ธฐ์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•ด ๋ช…ํ•จ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ƒ๋Œ€๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ์ž‘์—…๋‚ด์šฉ

1) NearbyInteraction ๊ถŒํ•œ ๋ฌธ๊ตฌ ์ •์ • โ€” UMCApp/Project.swift:34-38

๊ธฐ์กด ๋ฌธ๊ตฌ๊ฐ€ "์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์„œ์ˆ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, NearbyInteraction ์€ UWB ๋กœ ์ƒ๋Œ€ ๊ธฐ๊ธฐ์™€์˜ ๊ฑฐ๋ฆฌยท๋ฐฉํ–ฅ๋งŒ ์žฌ๊ณ  CoreLocation ์„ ์ „ํ˜€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๊ฐ™์€ Info.plist ์— GPS ์ถœ์„์šฉ NSLocationWhenInUseUsageDescription ์ด ๋”ฐ๋กœ ์žˆ์–ด ๋‘ ๊ถŒํ•œ์„ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์˜ค๋…ํ•  ์†Œ์ง€๋„ ์žˆ์—ˆ๋‹ค. ์‹ค์ œ ์šฉ๋„์™€ ๋‹ค๋ฅธ purpose string ์€ App Review ์ง€์  ๋Œ€์ƒ์ด๋ผ ๋จผ์ € ์ •์ •ํ–ˆ๋‹ค.

๊ทผ๊ฑฐ: PeerRangingCoordinator ๋Š” NISession ์œผ๋กœ ํ”ผ์–ด๋ณ„ ๊ฑฐ๋ฆฌ(PeerDistance.meters)๋งŒ ์ธก์ •ํ•˜๊ณ  ์œ„์น˜๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

์ •์ •ํ•œ ํ‚ค ์œ„์— ์™œ ์ด๋ ‡๊ฒŒ ์ผ๋Š”์ง€(NI ๋Š” CoreLocation ์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค / GPS ์ถœ์„ ๊ถŒํ•œ๊ณผ ๋ณ„๊ฐœ๋‹ค)๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ๋‹ค์‹œ ๋˜๋Œ์•„์˜ค์ง€ ์•Š๊ฒŒ ํ–ˆ๋‹ค.

2) ๋ช…ํ•จ ๊ด€๋ จ ๊ถŒํ•œ ๋ฌธ๊ตฌ ์ „์ˆ˜ ์ ๊ฒ€ โ€” ๋‚˜๋จธ์ง€๋Š” ๋ณ€๊ฒฝ ์—†์Œ

์‹ค์ œ ์‚ฌ์šฉ์ฒ˜์™€ ๋Œ€์กฐํ•ด ์„œ์ˆ ์ด ์ •ํ™•ํ•จ์„ ํ™•์ธํ–ˆ๊ณ , ๋ถˆํ•„์š”ํ•œ diff ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์†๋Œ€์ง€ ์•Š์•˜๋‹ค.

ํ‚ค ์‹ค์ œ ์‚ฌ์šฉ์ฒ˜ ํŒ์ •
NSLocalNetworkUsageDescription MPCTransport.swift โ€” MPC ๋ธŒ๋ผ์šฐ์ง•/๊ด‘๊ณ  ๋ฌธ์ œ ์—†์Œ
NSBonjourServices MPCTransport.swift:43 serviceType = "umc-card" โ†” _umc-card._tcp/._udp ์ผ์น˜ ๋ฌธ์ œ ์—†์Œ
NSCameraUsageDescription QRScannerView.swift โ€” VisionKit DataScannerViewController QR ์Šค์บ” ๋ฌธ์ œ ์—†์Œ
NSPhotoLibraryAddUsageDescription CardImageSaving.swift:41 PHPhotoLibrary.requestAuthorization(for: .addOnly) โ€” ์“ฐ๊ธฐ ์ „์šฉ ๋ฌธ์ œ ์—†์Œ (Add ์ „์šฉ ํ‚ค ์„ ํƒ๋„ ์ •ํ™•)
NSLocationWhenInUseUsageDescription LocationManager.swift (GPS ์ถœ์„) ์„œ์ˆ  ์ž์ฒด๋Š” ์ฐธ โ€” ์•„๋ž˜ ใ€Œ์ถ”ํ›„ ์ง„ํ–‰ ์ƒํ™ฉใ€ ์ฐธ์กฐ

๋‹ค๋ฅธ ํƒ€๊ฒŸ(์œ„์ ฏยท์›Œ์น˜)์— ๊ฐ™์€ ๊ถŒํ•œ ํ‚ค๊ฐ€ ์ค‘๋ณต ์„ ์–ธ๋ผ ์žˆ๋Š”์ง€๋„ ํ™•์ธํ–ˆ๋‹ค โ€” ์—†์Œ. UMCApp/ ํŠธ๋ฆฌ์— ๋ฌผ๋ฆฌ Info.plist ํŒŒ์ผ์ด 0๊ฐœ๊ณ (์ „๋ถ€ Tuist ์ƒ์„ฑ), NS*UsageDescription ์„ ํฌํ•จํ•œ ์ƒ์„ฑ plist ๋Š” Derived/InfoPlists/UMCApp-Info.plist ํ•˜๋‚˜๋ฟ์ด๋‹ค.

3) ์‹ค๊ธฐ๊ธฐ ๊ฒ€์ฆ ๋ฌธ์„œ ์‹ ๊ทœ โ€” docs/claude/nearby-exchange-device-verification.md

๊ทผ๊ฑฐ๋ฆฌ ๊ตํ™˜์€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ๊ฒ€์ฆ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ๋ฐ(์‹ค๊ธฐ๊ธฐ 2๋Œ€ ํ•„์ˆ˜), ์กฐ์ง ํŒ€ App ID ์— ํ•„์š”ํ•œ capability ๊ฐ€ ์ •๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ํŒ€ ์ „์ฒด๊ฐ€ ๊ฒ€์ฆ์„ ์žฌํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์˜€๋‹ค. ํŒ€์› 1๋ช…์ด ์ด ๋ฌธ์„œ๋งŒ ๋ณด๊ณ  ๊ฒ€์ฆ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ž‘์„ฑ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•˜๋‹ค.

  • App ID 8B8B4462NV capability ์ฒดํฌ๋ฆฌ์ŠคํŠธ โ€” UMCApp.entitlements ์‹ค์ œ ๋‚ด์šฉ์—์„œ ์—ญ์‚ฐ. Nearby Interaction ยท Push Notifications ยท Sign In with Apple ยท iCloud(CloudKit) ยท App Groups. iCloud Container(iCloud.com.umc.product)ยทApp Group(group.com.umc.product.widget)์ฒ˜๋Ÿผ ๋ณ„๋„๋กœ ์ƒ์„ฑยท์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์‹๋ณ„์ž๋Š” โ˜… ๋กœ ๊ตฌ๋ถ„ํ–ˆ๊ณ , ์œ„์ ฏยท์›Œ์น˜ ๋ถ€์† ํƒ€๊ฒŸ App ID ๋„ ํฌํ•จํ–ˆ๋‹ค.
  • ํฌํ„ธ์—์„œ ์ผค ๊ฒƒ์ด ์—†๋Š” ํ•ญ๋ชฉ์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌ โ€” ๋กœ์ปฌ ๋„คํŠธ์›Œํฌยท์นด๋ฉ”๋ผยท์‚ฌ์ง„ยท์œ„์น˜๋Š” Info.plist ํ‚ค๋งŒ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ํฌํ„ธ์—์„œ ์Šค์œ„์น˜๋ฅผ ์ฐพ์•„ ํ—ค๋งค๋Š” ์‹œ๊ฐ„์„ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ๋‹ค.
  • ๊ธฐ๊ธฐ ์กฐํ•ฉ๋ณ„ ๊ฒ€์ฆ ๊ฐ€๋Šฅ ๋ฒ”์œ„ ํ‘œ(UWB 2๋Œ€ / 1๋Œ€ / 0๋Œ€) โ€” ๊ธฐ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•œ ํŒ€์›๋„ ์–ด๋””๊นŒ์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค. UWB ๋Š” NI ๋Œ€์นญ ๋•Œ๋ฌธ์— ์–‘์ชฝ ๋‹ค ํƒ‘์žฌ์—ฌ์•ผ๋งŒ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.
  • ๋‹จ๊ณ„๋ณ„ ๊ฒ€์ฆ ์ ˆ์ฐจ โ€” ํ•˜๋„ค์Šค ์ง„์ž…(-bcHarness)๋ถ€ํ„ฐ MPC ๋ฐœ๊ฒฌ โ†’ ์—ฐ๊ฒฐ โ†’ ๋ช…ํ•จ ์™•๋ณต โ†’ UWB ๊ฑฐ๋ฆฌ๊นŒ์ง€, ๊ฐ ๋‹จ๊ณ„์— ๋ฌด์—‡์ด ๋ณด์ด๋ฉด ์„ฑ๊ณต์ธ์ง€(๊ธฐ๋Œ€ ๊ฒฐ๊ณผ) ๋ฅผ ๋ถ™์˜€๋‹ค. MPC ๋ฅผ ๋นผ๊ณ  NI ๋งŒ ๋ณด๋Š” UWB ๋‹จ๋… ์ ˆ์ฐจ๋„ ๋ณ„๋„๋กœ ๋„ฃ์—ˆ๋‹ค.
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ํ‘œ 15๊ฑด โ€” ์„œ๋ช… ์‹คํŒจ, ํ”ผ์–ด ๋ฏธ๋ฐœ๊ฒฌ(๊ถŒํ•œ ๊ฑฐ๋ถ€ / ์„œ๋น„์Šค ํƒ€์ž… ๋ถˆ์ผ์น˜ / ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ), ๊ฑฐ๋ฆฌ ๋ฏธํ‘œ์‹œ(NI ๋น„๋Œ€์นญ / UWB ๋ฏธํƒ‘์žฌ / ๋ฐฑ๊ทธ๋ผ์šด๋“œ), ๊ถŒํ•œ ํŒ์—… ๋ˆ„๋ฝ ๋“ฑ.
  • CLAUDE.md ๋ ˆํผ๋Ÿฐ์Šค ํ‘œ์— ๋ฌธ์„œ ํ–‰ ์ถ”๊ฐ€.

๋ฌธ์„œ ์ž‘์„ฑ ์‹œ Debug ํ•˜๋„ค์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ฝ์–ด ์ง„์ž… ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ–ˆ๋‹ค โ€” ํ•˜๋„ค์Šค ์ง„์ž…์€ ์‹คํ–‰ ์ธ์ž -bcHarness ๊ฐ€ ์œ ์ผํ•œ ๊ฒฝ๋กœ์ด๊ณ  UI ๋ฒ„ํŠผ์ด ์—†๋‹ค(RootTabView.swift:79-84). ์ถ”์ธก์œผ๋กœ ์“ด ์ ˆ์ฐจ๊ฐ€ ์—†๋„๋ก ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ file:line ๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ–ˆ๋‹ค.

๊ฒ€์ฆ

cd UMCApp && make test โ†’ ** TEST SUCCEEDED ** (5 suites / 32 tests).
tuist generate ํ›„ ์ƒ์„ฑ๋œ Derived/InfoPlists/UMCApp-Info.plist ๋ฅผ PlistBuddy ๋กœ ์ง์ ‘ ์—ด์–ด ์ƒˆ ๋ฌธ๊ตฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ฐ˜์˜๋๊ณ  ๋‚˜๋จธ์ง€ ํ‚คยทNSBonjourServices ๋Š” ๊ทธ๋Œ€๋กœ์ž„์„ ํ™•์ธํ–ˆ๋‹ค.

๐Ÿ“‹ ์ถ”ํ›„ ์ง„ํ–‰ ์ƒํ™ฉ

๐Ÿšง ์ด PR ๋กœ ๋๋‚ผ ์ˆ˜ ์—†๋Š” ํ•ญ๋ชฉ (์‚ฌ๋žŒ ์† ํ•„์š”)

Apple Developer ํฌํ„ธ์˜ App ID capability ๋ฐ˜์˜ โ€” ํฌํ„ธ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์ง์ ‘ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œยท๋ฌธ์„œ๋กœ๋Š” "๋ฌด์—‡์„ ์ผœ์•ผ ํ•˜๋Š”์ง€"๊นŒ์ง€๋งŒ ํ™•์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Identifiers โ†’ com.umc.product ์—์„œ ๋ฌธ์„œ 3-1 ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Œ€๋กœ capability on/off ์ƒํƒœ ํ™•์ธยท๋ฐ˜์˜ (ํŠนํžˆ Nearby Interaction โ€” ๊บผ์ ธ ์žˆ์œผ๋ฉด UWB ๊ฒ€์ฆ์ด ์„œ๋ช… ๋‹จ๊ณ„์—์„œ ๋ง‰ํžŒ๋‹ค)
  • iCloud Container iCloud.com.umc.product ยท App Group group.com.umc.product.widget ์˜ ํฌํ„ธ ์กด์žฌยท์—ฐ๊ฒฐ ์—ฌ๋ถ€ ํ™•์ธ
  • ๋ถ€์† ํƒ€๊ฒŸ App ID(com.umc.product.widget, com.umc.product.watchkitapp) ์กด์žฌ ํ™•์ธ
  • ์œ„ ๋ฐ˜์˜ ํ›„ ์‹ค๊ธฐ๊ธฐ 2๋Œ€๋กœ ๋ฌธ์„œ 5์žฅ ์ ˆ์ฐจ๋ฅผ ์‹ค์ œ ์ˆ˜ํ–‰, ํŒ€์› 1๋ช…์ด ๋ฌธ์„œ๋งŒ ๋ณด๊ณ  ์žฌํ˜„๋˜๋Š”์ง€ ํ™•์ธ (์ด์Šˆ ๐Ÿ€ ETC: ๋ช…ํ•จ ๋ฐฐํฌ ์ค€๋น„ โ€” NI ๊ถŒํ•œ ๋ฌธ๊ตฌ ์ •์ • ยท ์กฐ์ง ํŒ€ App ID ์„œ๋ช…ย #1241 ์˜ ๋งˆ์ง€๋ง‰ ์™„๋ฃŒ ์กฐ๊ฑด)

ํ›„์† ๊ณผ์ œ

  • NSLocationWhenInUseUsageDescription ๋ฌธ๊ตฌ๋Š” GPS ์ถœ์„๋งŒ ์„œ์ˆ ํ•˜๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” ์Šคํ„ฐ๋”” ์žฅ์†Œ ์„ ํƒ ์ง€๋„(MapPickerLocationProvider.swift:48)์—์„œ๋„ requestWhenInUseAuthorization() ์„ ํ˜ธ์ถœํ•œ๋‹ค. ๊ฑฐ์ง“์€ ์•„๋‹ˆ์ง€๋งŒ ๋ชจ๋“  ์‚ฌ์šฉ์ฒ˜๋ฅผ ๋ฎ์ง€ ๋ชปํ•œ๋‹ค โ€” Apple ์€ purpose string ์ด ์ „ ์‚ฌ์šฉ์ฒ˜๋ฅผ ํฌ๊ด„ํ•˜๊ธธ ์š”๊ตฌํ•œ๋‹ค. ๋‹ค๋งŒ (a) ๋ช…ํ•จ ๋ฒ”์œ„ ๋ฐ–์ด๊ณ  (b) ํ•ด๋‹น provider ์— TODO(#1017) ๋กœ LocationManager ํ†ตํ•ฉ ํ›„ ์ œ๊ฑฐ ๊ฒ€ํ† ๊ฐ€ ๊ฑธ๋ ค ์žˆ์–ด ๋ฌธ๊ตฌ๋ฅผ ์–ด๋””๊นŒ์ง€ ๋„“ํž์ง€๊ฐ€ ์ œํ’ˆ ํŒ๋‹จ์ด๋ผ, ์ด PR ๋ฒ”์œ„์—์„œ๋Š” ์†๋Œ€์ง€ ์•Š์•˜๋‹ค. โ™ป๏ธ Refactor: LocationManager ยท GeofenceEvent CoreFoundation ์ด๊ด€ โ€” LocationProviding ์‹ค๊ตฌํ˜„์ฒด ๋ถ€์žฌ ํ•ด์†Œย #1017 ์ •๋ฆฌ ์‹œ ํ•จ๊ป˜ ๋‹ค๋ฃจ๋ฉด ๋œ๋‹ค.
  • DebugFileLog.swift:17-21 ์ฃผ์„์˜ devicectl --domain-identifier dev.umc.product.debug ๋Š” ์‹ค์ œ Bundle ID(com.umc.product)์™€ ๋‹ค๋ฅด๋‹ค. ์‹ค๊ธฐ๊ธฐ์—์„œ ํ™•์ธ ํ›„ ์ฃผ์„์„ ์ •์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค โ€” ๋ฌธ์„œ์—๋Š” ํด๋ฐฑ์„ ๋ณ‘๊ธฐํ•ด ๋’€๋‹ค.

๐Ÿ“Œ ๋ฆฌ๋ทฐ ํฌ์ธํŠธ

  1. ๊ถŒํ•œ ๋ฌธ๊ตฌ ์ž์ฒด โ€” "๊ทผ์ฒ˜์— ์žˆ๋Š” ์ƒ๋Œ€ ๊ธฐ๊ธฐ์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•ด ๋ช…ํ•จ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ƒ๋Œ€๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์Šต๋‹ˆ๋‹ค." ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜๋Š” ๋ฌธ์žฅ์ด๋‹ค. "์œ„์น˜" ๋ฏธ์‚ฌ์šฉ / ๊ฑฐ๋ฆฌ ์ธก์ • ๋ช…์‹œ / ๋ชฉ์  ๋ช…์‹œ ์š”๊ฑด์€ ์ถฉ์กฑํ•˜๋Š”๋ฐ, ํ‘œํ˜„์ด ๋” ๋‚˜์„ ์—ฌ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ์˜๊ฒฌ ์ฃผ์„ธ์š”.
  2. App ID capability ๋ชฉ๋ก์˜ ๋ˆ„๋ฝ ์—ฌ๋ถ€ โ€” entitlements ํŒŒ์ผ์—์„œ ์—ญ์‚ฐํ•œ ๊ฒƒ์ด๋ผ, ํฌํ„ธ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ถ„์ด ์‹ค์ œ ํ™”๋ฉด๊ณผ ๋Œ€์กฐํ•ด ๋น ์ง„ ํ•ญ๋ชฉ์ด ์—†๋Š”์ง€ ๋ด์ฃผ์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
  3. ๋ฌธ์„œ 5์žฅ ์ ˆ์ฐจ์˜ ์žฌํ˜„์„ฑ โ€” ์ด PR ์˜ ์‹ค์งˆ์  ์™„๋ฃŒ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์‹ค๊ธฐ๊ธฐ๊ฐ€ ์žˆ๋Š” ๋ถ„์ด ๋ฌธ์„œ๋งŒ ๋ณด๊ณ  ๋”ฐ๋ผ๊ฐ€ ๋ณด๊ณ , ๋ง‰ํžˆ๋Š” ์ง€์ ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.
  4. ๋ช…ํ•จ ๊ด€๋ จ ๊ถŒํ•œ ํ‚ค๋ฅผ "๋ณ€๊ฒฝ ์—†์Œ"์œผ๋กœ ๋‘” ํŒ๋‹จ โ€” ์œ„ 2๋ฒˆ ํ‘œ์˜ ํŒ์ •์— ์ด๊ฒฌ ์žˆ์œผ๋ฉด ๋ง์”€ํ•ด ์ฃผ์„ธ์š”.

โœ… Checklist

PR์ด ๋‹ค์Œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”!!!

  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค
  • ์œ ์ง€-๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ์ž‘์„ฑํ•˜์˜€๋Š”๊ฐ€?

- NSNearbyInteractionUsageDescription ์ด "์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์„œ์ˆ ํ•˜๊ณ 
  ์žˆ์—ˆ์œผ๋‚˜ NearbyInteraction ์€ UWB ๋กœ ์ƒ๋Œ€ ๊ธฐ๊ธฐ์™€์˜ ๊ฑฐ๋ฆฌยท๋ฐฉํ–ฅ๋งŒ ์žฌ๊ณ 
  CoreLocation ์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค โ€” App Review ์ง€์  ๋ฆฌ์Šคํฌ
- ๊ฐ™์€ Info.plist ์˜ NSLocationWhenInUseUsageDescription(GPS ์ถœ์„)๊ณผ
  ๋ณ„๊ฐœ ๊ถŒํ•œ์ž„์ด ๋“œ๋Ÿฌ๋‚˜๋„๋ก ๋ฌธ๊ตฌ์™€ ๊ทผ๊ฑฐ ์ฃผ์„์„ ํ•จ๊ป˜ ์ •๋ฆฌ
- ๋ช…ํ•จ ๊ด€๋ จ ๋‚˜๋จธ์ง€ ๊ถŒํ•œ ํ‚ค(์นด๋ฉ”๋ผยท์‚ฌ์ง„ ์ถ”๊ฐ€ยท๋กœ์ปฌ ๋„คํŠธ์›ŒํฌยทBonjour)๋Š”
  ์‹ค์ œ ์‚ฌ์šฉ์ฒ˜์™€ ๋Œ€์กฐํ•ด ์„œ์ˆ ์ด ์ •ํ™•ํ•จ์„ ํ™•์ธ, ๋ณ€๊ฒฝ ์—†์Œ
- docs/claude/nearby-exchange-device-verification.md ์‹ ๊ทœ โ€” ํŒ€์› 1๋ช…์ด
  ๋ฌธ์„œ๋งŒ ๋ณด๊ณ  ์‹ค๊ธฐ๊ธฐ ๊ฒ€์ฆ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ž‘์„ฑ ๊ธฐ์ค€
- UMCApp.entitlements ์—์„œ ์—ญ์‚ฐํ•œ App ID 8B8B4462NV capability ์ฒดํฌ๋ฆฌ์ŠคํŠธ
  (Nearby InteractionยทPushยทSign in with AppleยทiCloud CloudKitยทApp Groups),
  ๋ณ„๋„ ์ƒ์„ฑ์ด ํ•„์š”ํ•œ iCloud ContainerยทApp Group ์‹๋ณ„์ž๋ฅผ ๋”ฐ๋กœ ํ‘œ์‹œ
- UWB ๊ธฐ๊ธฐ ์š”๊ฑด๊ณผ NI ๋Œ€์นญ ์กฐ๊ฑด, ๊ธฐ๊ธฐ ์กฐํ•ฉ๋ณ„(UWB 2๋Œ€/1๋Œ€/0๋Œ€) ๊ฒ€์ฆ ๊ฐ€๋Šฅ ๋ฒ”์œ„ ํ‘œ
- -bcHarness ์ง„์ž…๋ถ€ํ„ฐ ๋ช…ํ•จ ์™•๋ณตยทUWB ๋‹จ๋… ๊ฒ€์ฆ๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„ ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ ๋ช…์‹œ
- ์ฆ์ƒ 15๊ฑด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ํ‘œ (์„œ๋ช… ์‹คํŒจยทํ”ผ์–ด ๋ฏธ๋ฐœ๊ฒฌยท๊ฑฐ๋ฆฌ ๋ฏธํ‘œ์‹œยท๊ถŒํ•œ ํŒ์—… ๋ˆ„๋ฝ)
- CLAUDE.md ๋ ˆํผ๋Ÿฐ์Šค ํ‘œ์— ๋ฌธ์„œ ํ–‰ ์ถ”๊ฐ€
@JEONG-J JEONG-J added ๐Ÿ”ง chore ํ”„๋กœ์ ํŠธ ์„ธํŒ…, ๋นŒ๋“œ ์„ค์ •, ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋“ฑ ๊ธฐํƒ€ ์ž‘์—…์ž…๋‹ˆ๋‹ค. โ›” Blocked ์„ ํ–‰ ์˜์กด์„ฑ(์™ธ๋ถ€ ๋ชจ๋“ˆ/๋ฐฑ์—”๋“œ)์œผ๋กœ ์ง„ํ–‰ ์ฐจ๋‹จ labels Aug 29, 2026
@JEONG-J JEONG-J self-assigned this Aug 29, 2026
@JEONG-J
JEONG-J merged commit 194c7e1 into develop Aug 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

โ›” Blocked ์„ ํ–‰ ์˜์กด์„ฑ(์™ธ๋ถ€ ๋ชจ๋“ˆ/๋ฐฑ์—”๋“œ)์œผ๋กœ ์ง„ํ–‰ ์ฐจ๋‹จ ๐Ÿ”ง chore ํ”„๋กœ์ ํŠธ ์„ธํŒ…, ๋นŒ๋“œ ์„ค์ •, ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋“ฑ ๊ธฐํƒ€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

Projects

None yet

1 participant