소개
웹에서 어떤 제품에든 네이티브 실시간 현황을 추가하세요. 모바일 개발은 필요 없어요.
WebActivity는 웹사이트나 백엔드에서 HTTP 호출 몇 번으로 제어하는 실시간 카드를 사용자 휴대폰에 띄워요.
iOS: 실시간 현황
실시간 현황은 잠금 화면, Dynamic Island, Apple Watch 스마트 스택에 표시되는 실시간 카드예요. 주문, 경기, 카운트다운처럼 바뀌는 정보를 보여 주고 그 자리에서 업데이트돼요. 사용자는 아무것도 열 필요가 없어요.
Android: Live Updates
같은 실시간 현황이 Android 휴대폰에는 그 자리에서 업데이트되는 알림으로 전달돼요.
- Android 사용자는 WebActivity 앱을 설치해요. 설치 없는 즉시 실행은 iOS에서만 돼요.
- Android 16 이상은 Live Update로 표시하고, 이전 버전은 일반 알림으로 표시해요.
- Android는 맞춤 디자인을 그릴 수 없어서, 레이아웃마다 Android가 허용하는 가장 가까운 형태를 써요.
작동 방식
- 시작. 백엔드가
POST /api/start를 호출해요.activityId와 실행 버튼을 받아요. - 실행. 사용자가 웹 페이지에서 실행 버튼을 탭해요. 휴대폰에 카드가 나타나요.
- 업데이트. 백엔드가
POST /api/update를 호출해요. 휴대폰의 카드가 바뀌어요. - 종료. 백엔드가
POST /api/end를 호출해요. 카드가 사라져요.
주요 용어
| 용어 | 의미 |
|---|---|
| 실시간 현황 | 휴대폰 한 대에 표시되는 실시간 카드 하나예요. id는 activityId(act- + 12자)예요. 재사용을 쓰면 휴대폰마다 자체 사본을 받아요. |
| 레이아웃 | 카드의 디자인으로 progress, picture, versus, countdown 중 하나예요. 레이아웃을 참고하세요. |
| 상태 | 카드에 표시되는 내용이에요. 상태 객체를 참고하세요. |
컨테이너 (widgetContainerId) | 위젯 하나를 가리키는 텍스트예요. 예: "pizza-tracker". 그 위젯을 호출할 때마다 같은 값을 보내세요. 휴대폰 한 대에는 컨테이너당 실시간 현황이 하나만 유지돼요. |
그룹 (group) | 선택 사항인 라벨이에요. 한 번의 호출로 같은 그룹의 모든 실시간 현황을 업데이트하거나 종료할 수 있어요. |
| 실행 버튼 | start가 반환하는 iframe이에요. 사용자가 탭하면 휴대폰에 실시간 현황이 추가돼요. |
| 재사용 | 실행 버튼 하나를 여러 휴대폰에 쓰는 방식이에요. 버튼 하나, 여러 휴대폰을 참고하세요. |
| 재시작 | 휴대폰이 카드를 바꾸지 않고 새로 만들어요. 재시작은 항상 알림을 울려요. |
| 컴팩트 Dynamic Island | 사용자가 다른 일을 하는 동안 iPhone 화면 위쪽에 표시되는 작은 Dynamic Island예요. |
| 푸시 | 휴대폰 한 대로 가는 전송 한 번이에요. 요금은 푸시 수로 계산해요. 전송 및 요금을 참고하세요. |
사용자는 iPhone과 Android의 WebActivity 앱으로 카드를 받아요. iPhone에서는 설치가 필요 없는 작은 버전인 앱 클립으로도 열 수 있어요. 앱이 수집하는 정보와 콘텐츠를 볼 수 있는 사람은 데이터 및 개인정보에서 확인하세요.
활용 사례
이런 화면은 원래 큰 네이티브 앱을 가진 회사만 쓸 수 있었어요. Uber의 차량 추적, DoorDash의 주문 상태, ESPN의 실시간 스코어처럼요. WebActivity는 QR 코드나 링크가 닿는 곳이라면 어디든 같은 화면을 열어 줘요.
- 고등학교 미식축구 경기: 입구의 QR 코드 하나로 관중석의 모든 휴대폰에 실시간 점수를 띄우고, 경기 중에 팀 역사, 재미있는 사실, 학생과 학부모의 유료 응원 메시지도 보여 줘요.
- 학교 모금 행사: 학부모가 일주일 내내 잠금 화면에서 기부 총액이 목표를 향해 올라가는 모습을 지켜봐요.
- 스포츠 베팅: 경기가 끝날 때까지 베팅 내역과 현재 배당률을 잠금 화면에 보여 줘요.
- AI 에이전트: 오래 실행되는 에이전트가 작업하면서 단계마다 휴대폰에 보고해요.
- 사내 팀 도구: 배포, 장애, 대기열 길이를 팀원의 휴대폰에 보여 줘요. 내부 앱을 만들거나 배포할 필요가 없어요.









