맥 앱 샌드박스 + 날씨·설정 열기 버그 - #19
Merged
Merged
Conversation
Mac App Store가 앱 샌드박스를 요구한다. 그건 맥에만 있는 키라 한 파일에 몰아넣으면 iOS 프로비저닝 프로파일과 어긋날 자리를 만든다. SDK마다 다른 파일을 물린다 — CODE_SIGN_ENTITLEMENTS[sdk=macosx*]. 맥 쪽에만 더한 것: app-sandbox, network.client(CloudKit·WeatherKit·Firebase), personal-information.location(날씨). 위젯 익스텐션도 따로 켰다 — 앱만 켜면 맥에서 익스텐션이 걸린다. 빌드 설정을 잘못 걸어도 빌드는 통과하므로, 파일이 아니라 서명된 산출물을 까서 확인했다(codesign -d --entitlements). 맥 프로비저닝이 이미 자동 발급돼 있다는 것과, 앱 그룹은 맥에서도 iOS 형식 그대로 쓴다는 것도 같은 방법으로 확인했다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
**날씨** — 첫 로드가 두 길로만 열려 있었다. scenePhase가 .active로 *바뀔 때* 도는 retry(), 그리고 첫 실행 권한 흐름(위치가 "아직 안 물어봄"일 때만 지나간다). 맥은 창이 이미 활성인 채로 떠서 그 변화가 안 오고, 권한을 이미 정해둔 사람은 첫 흐름도 안 지나간다 — 그래서 load()가 통째로 안 불렸다. RootTabView의 .task에서 한 번 부른다. **아직 안 물어본 상태에서는 안 부른다** — 그러면 위치 권한창이 안내 위로 덮친다. 묻는 순서는 StartupPermissionRequest 몫이다. 실패 이유가 unavailableReason에만 담겨 콘솔에 아무것도 없었다. 못 받은 이유를 로그로 남긴다. **설정 열기** — UIApplication.openSettingsURLString은 iOS의 앱별 설정 화면 주소다. 맥에는 그 화면이 없어서 눌러도 아무 일이 안 일어났다. 맥에서는 시스템 설정의 해당 창(알림 / 위치 서비스)을 직접 연다. 창 주소는 macOS 버전을 타므로, 못 열면 시스템 설정 첫 화면이 뜨는 선에서 그친다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 사항
Mac App Store에 올리기 위한 앱 샌드박스와, 그걸 켜고 맥에서 돌려보다 나온 버그 둘입니다.
1. 앱 샌드박스 + entitlements 분리 — 샌드박스는 맥에만 있는 키라 한 파일에 몰아넣으면 iOS 프로비저닝 프로파일과 어긋날 자리를 만듭니다.
CODE_SIGN_ENTITLEMENTS[sdk=macosx*]로 SDK마다 다른 파일을 물립니다.App.entitlements(그대로)MoscoWidget.entitlements(그대로)App-Mac.entitlementsMoscoWidget-Mac.entitlements맥에만 더한 키는 셋입니다 —
app-sandbox,network.client(CloudKit·WeatherKit·Firebase),personal-information.location(날씨). 위젯도 따로 켰습니다: 앱만 켜면 맥에서 익스텐션이 걸립니다.2. 맥에서 날씨가 아예 안 불리던 것 — 첫 로드가 두 길로만 열려 있었습니다.
scenePhase가.active로 바뀔 때 도는retry(), 그리고 첫 실행 권한 흐름(위치가 "아직 안 물어봄"일 때만 지나갑니다). 맥은 창이 이미 활성인 채로 떠서 그 변화가 안 오고, 권한을 이미 정해둔 사람은 첫 흐름도 안 지나갑니다 —load()가 통째로 안 불렸습니다.RootTabView의.task에서 한 번 부릅니다.아직 안 물어본 상태에서는 안 부릅니다. 그러면 위치 권한창이 안내(튜토리얼) 위로 덮칩니다 — 묻는 순서는
StartupPermissionRequest가 그대로 맡습니다.3. 맥에서 '설정에서 ~ 허용하기'가 아무 일도 안 하던 것 —
UIApplication.openSettingsURLString은 iOS의 앱별 설정 화면 주소입니다. 맥에는 그 화면이 없어서 버튼이 고장 난 것처럼 보였습니다. 맥에서는 시스템 설정의 해당 창을 직접 엽니다(알림 / 위치 서비스 / 그 밖엔 첫 화면).스크린샷 / 영상
없습니다. 맥 창을 띄우려면 사용자 화면에 창을 열어야 해서 넣지 않았습니다 — 맥에서 도는 것은 사용자가 직접 확인했습니다.
체크리스트
Shared/만 컴파일)으로 덮을 수 있는 순수 로직이 없습니다받으러 간다,스위치가 꺼져 있어)은 걷어냈습니다. 실패했을 때의 로그 둘만 남깁니다 — 이유가unavailableReason에만 담겨 있어서 맥에서 날씨가 안 뜨는데 콘솔에 아무것도 없었던 것이 이번 진단을 늦춘 원인입니다확인한 것
application-identifier에 팀 접두사), 앱 그룹은 맥에서도 iOS 형식 그대로입니다(맥은 팀 접두사가 필요한 경우가 있어 의심했는데 Catalyst는 아니었습니다.~/Library/Group Containers/에 실제 폴더가 있습니다).data_scale에 할 일 10~49개·카테고리 4개,analytics_identity origin: restoredFromCloud,Sandbox: ... deny줄 없음.못 한 것
docs/BACKLOG.md에 있습니다 — App Store Connect에 macOS 플랫폼 추가(계정으로 하는 일), 수출 규정 plist, 기본 창 크기·메뉴바·단축키.맥에서 알림이 거부(status=1) 상태인 것은 이 PR 범위 밖입니다. 시스템 설정에서 허용하면 되고, 그 버튼이 이제 실제로 동작합니다.
위임했으면 쌌을 곳
없었습니다. 날씨가 안 불리는 경로는 호출부가 두 곳뿐이라
grep두 번으로 끝났고, entitlements는 산출물을 까보는 것이 조사보다 빨랐습니다.관련 이슈
없음 (#17 후속)
🤖 Generated with Claude Code