# iPhone으로 SMS 일회용 코드를 CI와 QA 자동화에 넘기기

> 팀 iPhone에 온 SMS 일회용 코드를 내 웹후크로 보내 CI와 QA 실행이 스스로 로그인을 마치게 해요. 방법 비교, 설정, 한계를 정리했어요.

마지막 업데이트: 2026-10-23
표준 HTML 페이지: https://www.fwrdsms.com/ko/blog/sms-otp-codes-ci-automation-iphone
Published: 2026-10-17

SMS 일회용 코드를 CI나 QA 자동화에 넘기려면, 코드를 받는 SIM을 팀 iPhone에 넣고 단축어의 ‘메시지’ 자동화가 코드 문자를 Fwrd에 넘기게 하세요. 그러면 Fwrd가 그 문자를 내 HTTPS 웹후크로 JSON으로 게시해요. CI 작업은 그 엔드포인트에서 가장 최근 코드를 읽어 로그인 화면에 입력하면 돼요.

**필요한 것:** 코드를 받는 번호의 SIM이 들어 있는 iOS 26 이상의 iPhone, 단축어 앱(이미 설치돼 있어요), [Fwrd](https://apps.apple.com/app/apple-store/id6759069713?pt=128544281&ct=ko-blog-otp-qa&mt=8), 그리고 CI가 읽을 수 있는 공개 HTTPS 주소예요. 스테이징 경로나 n8n 워크플로 같은 곳이면 돼요. Fwrd는 IP 주소와 .local 또는 .internal 이름을 거부하고 로그인 헤더도 보내지 않으니, 주소에 긴 비밀 값을 넣으세요.

## SMS 코드는 왜 자동화하기 어려울까요?

SMS 코드는 러너가 아니라 휴대폰에 도착하기 때문에, 누군가 문자를 파이프라인이 읽을 수 있는 곳으로 옮겨 주기 전까지 CI가 멈춰요.

이런 검사를 만드는 팀 대부분은 코드를 받을 휴대폰이 자기 것밖에 없어요. Fwrd를 단 팀 iPhone은 그 휴대폰을 파이프라인이 읽을 수 있는 것으로 바꿔 줘요.

## 팀 iPhone은 언제 맞나요?

코드가 특정 통신사 번호로 와야 할 때 맞아요. 로그인하는 외부 서비스, 이미 회사 휴대폰에 묶인 스테이징 계정, 번호 종류에 따라 다르게 처리하는 흐름 같은 경우예요. Twilio의 [Lookup 문서](https://www.twilio.com/docs/lookup/v2-api/line-type-intelligence)(2026년 10월 17일에 읽었어요)에 따르면 앱은 모바일 번호와 비고정 VoIP 번호를 구분할 수 있어요. Twilio는 VoIP 번호를 온라인에서 얻는 가상 번호라고 설명해요. 팀 iPhone의 SIM은 실제 통신사 번호라서, 고객에게 오는 것처럼 코드가 도착해요.

장단점은 휴대폰 하나에 번호 하나이고, 계속 켜 두고 온라인이어야 한다는 거예요. 아래 섹션에서 둘 다 다뤄요.

## iPhone의 SMS 코드를 CI로 보내는 방법

Fwrd에서 코드만 남기는 웹후크 보낼 곳을 추가한 다음, 코드 문자를 Fwrd에 넘기는 ‘메시지’ 자동화를 만드세요. 엔드포인트 쪽은 [웹후크 가이드](https://www.fwrdsms.com/ko/guides/webhook)에 자세히 나와 있어요.

1. **Fwrd에 웹후크를 추가하세요.** Fwrd를 열고 ‘+’를 탭한 다음 ‘웹후크’를 선택하세요. ‘설정’ 필드에 엔드포인트의 HTTPS 주소 전체를 붙여 넣고, ‘테스트 메시지 보내기’를 탭해 엔드포인트가 필드를 받게 한 다음 체크 표시를 탭해 저장하세요.

2. **코드만 남기세요.** 같은 보낼 곳에서 ‘받을 문자’의 ‘일부 문자만’을 선택하고 ‘코드처럼 보임’을 켜세요. 4~8자리 코드가 들어 있는 문자만 남아요. 조건이 하나라서 무료 플랜에서도 쓸 수 있어요.

3. **‘메시지’ 자동화를 만드세요.** iOS 27에서는 단축어 앱을 열고 ‘보관함’ > ‘자동화’ 순서로 탭한 다음 ‘+’를 탭하세요. ‘단축어 설명’이 보이면 ‘편집’을 탭하세요. ‘자동화’를 탭한 다음 ‘메시지’를 탭하고, ‘보낸 사람’을 ‘메시지’로 바꾼 뒤 code 또는 서비스가 보내는 문자에 쓰이는 단어를 입력하세요. iOS 26에서는 ‘자동화’ 탭을 열고 ‘+’를 탭한 다음 ‘메시지’를 선택하고 ‘메시지 포함 내용’에 입력하세요.

4. **묻지 않고 실행되게 하세요.** iOS 27에서는 트리거 옆 화살표를 탭하고 ‘실행 전에 확인’이 꺼져 있는지 확인하세요. ⓘ > ‘개인정보 보호’에서 ‘잠겨 있는 동안 실행 허용’이 켜져 있는지 확인하세요. iOS 26에서는 ‘즉시 실행’을 선택하고 ‘다음’을 탭한 다음 ‘새로운 단축어 생성’을 탭하세요.

5. **Fwrd의 동작을 추가하세요.** ‘전달’을 검색해서 ‘모든 보낼 곳으로 메시지 전달’을 추가하세요. ‘메시지’를 ‘단축어 입력’으로 설정하세요(iOS 26에서는 ‘단축어 입력’을 탭한 다음 ‘메시지’). 뒤로 가기를 탭해 저장하세요(iOS 26에서는 ‘완료’).

6. **CI에서 코드를 읽으세요.** 엔드포인트가 각 본문을 도착 시각과 함께 저장하게 하세요. 실행이 코드를 요청한 뒤에는, 그 이후에 받은 가장 최근 문자를 가져오고 정규식으로 숫자를 뽑아내세요.

7. **이제 끝났어요.** 새 코드 문자가 iPhone이 잠겨 있어도 알아서 내 엔드포인트로 전달돼요.

### 엔드포인트는 무엇을 받을까요?

문자가 도착한 그대로 담긴 JSON 본문의 POST예요. `content`와 `text` 두 필드에 같은 내용이 들어 있어요. 타임스탬프는 없으니 시각은 내 쪽에서 기록하세요.

```json
{
  "content": "Your verification code is 482913",
  "text": "Your verification code is 482913"
}
```

같은 문자에 대한 모든 시도에는 같은 `Idempotency-Key` 헤더가 붙으니 중복은 버릴 수 있어요. 전송이 시간 초과되거나 429 또는 5xx를 받거나 연결이 끊기면 Fwrd가 최대 두 번 다시 시도해요. 15초 안에 2xx 응답이 오면 전달된 것으로 세고, 리디렉션은 거부해요. Fwrd의 ‘설정’에서 ‘보낸 사람 포함’을 켜고 Fwrd의 동작에서 ‘보낸 사람’을 고르면 본문에 `sender` 필드도 들어가요. 여러 서비스가 같은 번호로 문자를 보낼 때 편해요.

## 이 설정으로 할 수 없는 일

- **번호 하나는 한 번에 실행 하나만 맡을 수 있어요.** 같은 번호로 코드를 요청하는 병렬 작업은 서로의 코드를 읽을 수 있어요. 로그인 단계를 줄 세우거나 각 코드를 요청한 실행과 짝지으세요.
- **무료 플랜은 코드 15건까지예요.** 그 뒤에는 다음 달까지 코드가 멈추고, 바쁜 파이프라인은 금방 거기에 닿아요. Fwrd Pro는 제한이 없고 요금은 미국 기준으로 월 $4.99 또는 연 $29.99예요.
- **받기 전용이에요.** Fwrd는 CI를 대신해 iPhone에서 문자를 보낼 수 없어요.
- **휴대폰이 켜져 있고 온라인이어야 해요.** 재시작한 뒤에는 누군가 잠금을 한 번 해제할 때까지 전달이 기다리고, 3일 동안 잠금을 해제하지 않은 iPhone은 스스로 재시작해요. 충전해 두고 손이 닿는 곳에 두세요.
- **Fwrd의 동작은 활성화된 모든 보낼 곳에 닿아요.** 같은 휴대폰이 다른 곳으로도 전달한다면 ‘보낼 곳으로 메시지 전달’을 대신 쓰고 웹후크를 고르세요.
- **새 문자만 보내요.** 자동화가 생기기 전에 도착한 코드는 전달되지 않아요.

파이프라인이 아니라 코드 자체가 필요한 사람은 [팀과 Slack에서 2FA 코드 공유하기](https://www.fwrdsms.com/ko/blog/share-2fa-codes-with-team-slack)에서 그 설정을 볼 수 있어요.

## 자동화 속 SMS 코드에 대한 질문

### Selenium이나 Playwright가 SMS 코드를 직접 읽을 수 있나요?

아니요. 브라우저 자동화는 휴대폰의 메시지를 볼 수 없어요. 먼저 무언가가 문자를 휴대폰 밖으로 옮겨야 해요. 단축어 자동화와 Fwrd가 스크립트가 읽는 웹후크로 게시하는 방식이 그 예예요.

### 코드가 Fwrd 서버를 거치나요?

아니요. Fwrd에는 계정도 자체 서버도 없어요. 문자는 iPhone에서 내 HTTPS 엔드포인트로 바로 가고, 주소는 iPhone의 키체인에 보관돼요.

### 단축 번호 발신자도 되나요?

네. 자동화는 누가 보냈는지가 아니라 문자 내용을 기준으로 맞춰요. 연락처에 없는 짧은 번호에서 온 코드도 code 같은 단어로 걸러져요.

### n8n 워크플로를 엔드포인트로 쓸 수 있나요?

네. POST로 설정한 Webhook 노드를 추가하고 프로덕션 URL을 쓴 다음 워크플로를 게시하세요. 게시하지 않으면 응답하지 않아요. 단계는 [iPhone 문자를 Zapier, Make, n8n으로 보내기](https://www.fwrdsms.com/ko/iphone-sms-to-zapier-make-n8n)에 있어요.

## 더 읽어 보기

- [iPhone SMS를 웹후크로 전달하기](https://www.fwrdsms.com/ko/iphone-sms-to-webhook)
- [iPhone SMS API가 있나요? iOS에서 문자 받는 법](https://www.fwrdsms.com/ko/blog/iphone-sms-api)
