RunWay (25) App Store 배포
드디어 App Store Connect에 앱을 올려서 배포를 해보도록 한다. 스크린샷 만들기 시뮬레이터에서 찍은 스크린샷을 그냥 올리기엔 밋밋해서, 캡션이랑 어두운 배경을 얹은 마케팅용 스크린샷을 따로 만들었다. AI한테 부탁해서 적당한 멘트를 추천받아 만들었다. 어플의 테마색을 유지하면서 만들었다. 사이즈 에러 다 만들어서 올렸...
드디어 App Store Connect에 앱을 올려서 배포를 해보도록 한다. 스크린샷 만들기 시뮬레이터에서 찍은 스크린샷을 그냥 올리기엔 밋밋해서, 캡션이랑 어두운 배경을 얹은 마케팅용 스크린샷을 따로 만들었다. AI한테 부탁해서 적당한 멘트를 추천받아 만들었다. 어플의 테마색을 유지하면서 만들었다. 사이즈 에러 다 만들어서 올렸...
Watch로 미러링해서 러닝을 해보다가, 종료했는데도 iPhone의 다이나믹 아일랜드가 계속 떠있는 걸 발견했다. 종료 신호는 분명 Watch에서 iPhone으로 잘 넘어가는데 왜 저것만 안 없어지나 싶어서 코드를 따라가 봤다. 원인 1 - Watch가 주도하면 애초에 시작이 안 된다 먼저 startActivity()가 어디서 호출되는지부터 ...
프로젝트를 만들고 일주일 정도 쉬면서 이것저것 생각해보다가, 3개국 언어를 지원하면 좋겠다는 생각이 들었다. 한/영/일 지원 범위를 정해야 했는데, 온보딩 마지막 페이지(개인정보 처리방침)는 이미 자체 언어 선택 로직이 있었지만 나머지 화면은 전부 한국어 하드코딩이었다. 앱 전체를 다 바꾸긴 부담이 커서 범위를 좁혔다. GPWS, SINK RATE...
App Store 심사를 기다리는 동안에도 야외 테스트는 계속 돌리고 있다. 마트 가는 길에 잠깐 뛰어보다가, 미러링 관련해서 방향에 따라 증상이 다르게 나타나는 버그를 발견했다. 빌드 전 - 앱 주도 미러링 iPhone에서 러닝을 시작해서 Watch로 미러링하는 상황에서 두 가지 문제가 나왔다. Watch에서 location을 제대로 re...
지금 TakeoffView의 값들이 하드코딩 되어있는데 이걸 실기기 반영을 해보도록 한다. 현재는 하드코딩되어있는데, 워치 연동 그리고 battery 상태 등을 활용해서 실기기를 반영하도록 수정해본다. GPS Signal 우선 GPS 감도이다. LocationService에 이미 accuracy: Double 프로퍼티가 있다. CLLoc...
RunWay를 만들면서 매일 GitHub Issue에 그날 겪은 문제와 해결 과정을 댓글로 남겼다. 이슈만 23개, 댓글은 그보다 훨씬 많다. App Store 심사 제출을 앞둔 지금, 이 기록들을 Week 단위로 압축해서 5주 전체를 한 번에 돌아본다. 세세한 코드 diff는 각 Day별 포스트나 README에 있으니, 여기서는 “무슨 일이 있었고...
TestFlight 베타 심사가 진행 중이다. 심사 결과를 기다리는 동안 손 놓고 있을 수는 없어서, App Store 정식 출시에 필요한 것들을 미리 정리해보기로 했다. 정식 출시를 위해 필요한 항목은 크게 이렇다. 스크린샷 (iPhone, Watch) 앱 설명 (짧은 설명 / 긴 설명) 키워드 카테고리 연령 등급 개인정보...
이제 배포전 TestFlight를 준비한다. 앱 아이콘 앱아이콘은 워치 둘다 만들어 둔 상태이다. 워치도 아이콘은 같아서 이미지는 패스 버전 / 빌드 넘버 버전 / 빌드 역시 초기값 그대로 해둔 상태이다. Xcode에서 프로젝트 타겟을 선택하고 General 탭의 Identity 섹션에서 설정한다. Version은 사용자에게 ...
실기기 테스트를 진행하면서 발견한 버그들을 정리한다. 발견된 버그 1. 일시정지 동기화 안됨 미러링 중 위치 데이터 업데이트가 5초 이상 없으면 주도 기기는 isPaused가 걸리는데, 미러링 기기는 그 상태를 전달받지 못해 계속 러닝 중인 것처럼 표시된다. Before 미러링 기기(startOrigin == .remote)는 start(...
문제 인식 지금 구조는 미러링 중에도 iPhone과 Watch가 각자 독립적으로 위치 데이터를 처리하고 있다. Watch 주도 미러링이어도 iPhone이 자체 LocationService와 RunningCenter를 돌려서 GPS를 따로 수집하고 계산하는 식이다. 이 방식의 문제는 실제로 사용해보면서 드러났다. Watch에서 미러링으로 러닝을 ...