#이름을 먼저 적게 했다
숙소 운영 보조 도구를 만들며 작업자에게 전달할 정보를 다시 정리한 적이 있다. 청소할 숙소와 다음 예약을 보여주는 것에 이어, 실제로 일할 사람을 앱에 연결하는 과정도 살폈다.
호스트에게는 이미 연락하는 작업자가 있었다. 그 사람의 이름을 먼저 등록하고, 초대 링크를 보내 연결하도록 바꿨다. 앱 안에서 새 연락 수단을 익히게 하기보다 휴대전화의 시스템 공유창을 사용했다. 익숙한 앱을 골라 링크를 보내는 방식이다.
50~70대 사용자를 고려한 선택이었지만, 그 이유만으로 사용이 쉬워졌다고 결론 내리지는 않았다. 안내를 읽고 공유창을 열 수 있는지, 링크를 받은 사람이 어디로 가는지를 실제 화면에서 확인해야 했다.
#보내는 화면만으로 끝내지 않았다
초대 단계가 바뀌었는데 화면은 이전 스크롤 위치에 남아 있으면 새 안내를 놓칠 수 있었다. 단계가 바뀔 때 상단으로 돌아오게 했다. 이미 수락한 링크를 다시 열었을 때도 처음부터 초대를 시작하는 것처럼 보이지 않도록 앱으로 가는 안내를 보완했다.
공유 버튼에는 React Native의 Share.share()를 썼다. 사전등록한 작업자의 초대 링크를 메시지에 넣어 시스템 공유창에 넘긴다. 링크를 연 뒤 앱 안에서 이동하는 경로는 기존 Expo Router를 사용했다. 새 네이티브 메시징 모듈 없이 기존 실행 설정과 의존성으로 고칠 수 있는 경로였다.
공유 helper의 핵심 분기를 줄이면 다음과 같다. opened와 cancelled는 앱에서 붙인 결과 이름이다.
const result = await Share.share({ message });
return result.action === Share.dismissedAction
? "cancelled"
: "opened";
opened를 수신자의 링크 수신이나 초대 수락 완료로 저장하지 않았다. React Native Share 문서에서도 Android의 반환 action은 항상 sharedAction이라고 설명한다. iOS의 공유창 취소 분기와 수신자 연결 완료는 다른 확인이다. 복사 경로도 같은 helper에서 expo-clipboard의 setStringAsync(message)로 따로 처리했다.
공유창이 넘기는 것은 링크와 문구다. 로그인 뒤 원래 초대로 돌아오기, 유효한 코드인지 검사하기, 수락 뒤 명단 갱신하기는 앱과 서버의 몫으로 남았다.
배포할 때는 다른 작업이 섞이지 않는지도 확인했다. 검사한 후보와 실제 게시한 번들을 맞추고, 관련 소스 외의 변경이 포함되지 않았는지 대조했다. 작업자 연결 정보가 생기는 변경이라 웹과 앱뿐 아니라 DB 적용 결과도 함께 남겼다.
#운영에서 확인한 것은 여기까지였다
10월 21일 웹/API와 Android·iOS OTA 반영을 마쳤다. A90과 iPhone 15 Pro에서 게시한 업데이트가 적용된 것을 확인했다. 공개 웹의 초대 안내는 좁은 화면과 데스크톱 화면에서 살폈다.
두 실기기에서는 초대 딥링크로 들어가 잘못된 코드 안내를 확인했다. 로그인되지 않은 경우와 기존 로그인 세션이 유지된 경우의 안내가 달랐고, 확인 후에는 홈으로 돌아왔다.
여기까지는 배포와 진입·오류 안내를 확인한 결과다. 운영에서 유효한 새 초대를 만들고, 별도 수신자가 로그인한 뒤 원래 초대로 돌아와 수락하고, 호스트 명단에 반영되는 전체 과정은 배포 후 재실행하지 않았다. 개발 환경에서 연결한 기록을 운영의 새 수신자 검증으로 대신하지 않았다.
#다음에는 받는 사람 쪽에서 확인한다
링크를 보내는 쪽의 버튼이 동작해도 받는 사람이 연결을 마치지 못하면 초대는 끝나지 않는다. 특히 앱이 꺼져 있거나 설치되지 않은 상태에서 링크를 열었을 때 원래 초대로 돌아오는지 확인이 필요하다.
다음 검증은 유효한 초대 한 건을 기준으로 호스트 생성·공유부터 수신자 로그인·복귀·수락, 호스트 명단 반영까지 이어보는 것이다. 최초 가입이나 다른 계정으로의 실제 전달, 음성 읽기처럼 아직 실행하지 않은 항목도 남아 있다.
이번 변경으로 고객의 교육 시간이 줄었는지, 전화로 설명할 일이 적어졌는지는 측정하지 않았다. 이름을 먼저 적고 익숙한 공유창으로 보내도록 구현한 것, 운영에 반영한 것, 사용자가 혼자 연결을 마치는 것은 각각 확인할 일이었다.