HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/.codex/.tmp/plugins/plugins/zoom/skills/video-sdk/ios/RUNBOOK.md
# Video SDK iOS 5-Minute Preflight Runbook

Use this before deep debugging.

## Skill Doc Standard Note

- Skill entrypoint is `SKILL.md`.
- This runbook is an operational convention (recommended), not a required skill file.
- SDK/API names can drift by version; validate current names against docs/raw-docs before release.

## 1) Confirm Integration Surface

- Confirm this is a Video SDK custom session flow for iOS (not Meeting SDK).
- Verify UI/state are driven by session events, not meeting semantics.
- Wrapper platforms require JS/native bridge synchronization checks.

## 2) Confirm Required Credentials

- Video SDK app credentials (SDK Key/Secret) stored server-side.
- Backend-generated session JWT token.
- Session fields (`sessionName`, `userName`, role type) resolved before join.

## 3) Confirm Lifecycle Order

1. Initialize SDK client/context and register event listeners.
2. Generate/fetch session token from backend.
3. Join session and establish media streams.
4. Handle participant/media/control events during active session.

## 4) Confirm Event/State Handling

- Keep participant state keyed by user/session IDs.
- Reconcile subscribe/unsubscribe transitions for video/audio/share streams.
- Treat reconnect and device-change events as first-class state transitions.

## 5) Confirm Cleanup + Upgrade Posture

- Leave/end session and release helper/client resources.
- Remove listeners to avoid duplicate callbacks on rejoin.
- Re-check SDK version compatibility before deployment updates.

## 6) Quick Probes

- Token issuance and join flow succeed once end-to-end.
- Audio/video publish-subscribe operations complete with expected callbacks.
- Leave/rejoin works without leaked listener or stream state.

## 7) Fast Decision Tree

- Join fails immediately -> invalid/expired token or session field mismatch.
- Media state stuck -> listener binding/order issue or permission/device problem.
- Inconsistent behavior after update -> wrapper/native SDK version mismatch.

## 8) Source Checkpoints

### Official docs

- https://developers.zoom.us/docs/video-sdk/ios/
- https://marketplacefront.zoom.us/sdk/custom/ios/annotated.html

### Raw docs in repo

- `tools/zoom-crawler/raw-docs/developers.zoom.us/docs/video-sdk/ios/`
- `tools/zoom-crawler/raw-docs/marketplacefront.zoom.us/sdk/video-sdk/ios/`