콘텐츠로 이동

화면과 설치된 앱

터미널 창
curl -s "$OS/api/v1/devices/$DEV/screen?max_age_ms=1000" \
-H "Authorization: Bearer $TOKEN" -o screen.png -D - | grep -i x-frame-at
  • GET /devices/{id}/screen — chrome·android 기기만 돼요 (actual·virtual 모두). 다른 kind 는 422 SCREEN_UNSUPPORTED.
  • 응답 본문은 이미지 바이트(image/png·image/jpeg·image/webp)이고, 찍은 시각이 X-Frame-At 에 와요.
  • max_age_ms(500~60000, 기본 1000) 안의 화면이 있으면 기기에 다시 묻지 않아요. 동시에 온 요청 여럿은 스크린샷 한 번을 나눠 가져요(single-flight). 기기당 초당 2장까지.
  • 명령 기록·이벤트를 만들지 않아요 — 화면을 오래 봐도 기록이 쌓이지 않아요.

화면 동기화는 영상이 아니라 스크린샷 반복이에요. 데스크톱 화면은 창이 보이는 동안 이 API 를 반복해 부르고, 포커스를 잃으면 느리게, 숨으면 멈춰요. 그래서 비용은 “보고 있는 화면 수” 에 비례해요. 영상 스트림(WebRTC 등)은 없어요 범위 밖.

터미널 창
curl -s $OS/api/v1/devices/$DEV/installed-apps -H "Authorization: Bearer $TOKEN" \
| jq '.data[] | {package, label, app_id}'
  • GET /devices/{id}/installed-apps — 런처에서 열 수 있는 앱만 와요. 정책에 막힌 앱은 빠져요. 페이지를 나누지 않아요.
  • 아이콘은 icon_data_url(data:image/png;base64,…, 앱당 8 KiB 까지)로 와요. 없으면 화면이 기본 아이콘을 그려요.
  • 이미 저장한 앱에는 app_id 가 붙어요. 저장과 실행은 Dock 과 앱.
  • OS 는 설치된 앱을 저장하지 않아요 — 부를 때마다 에이전트에게 물어요. android 가 아니면 422 DEVICE_APPS_UNSUPPORTED, 오프라인이면 409 RESOURCE_OFFLINE.