Host permissions and networking
Both Headless and UI Kit need system permissions and network access from the host. Classroom feature permissions and OS device permission are independent.
iOS / iPadOS
Put NSCameraUsageDescription and NSMicrophoneUsageDescription in the host app's Info.plist. Accessing a protected device without its purpose string terminates the process. An SDK framework plist is insufficient. See iOS integration and Apple's purpose-string documentation.
Android
Check the merged host manifest and request runtime permission before opening devices:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Request CAMERA and RECORD_AUDIO at runtime. After denial, provide a way to retry or open settings. Configure additional audio devices, screen sharing and background behavior according to host features. See Android runtime permissions.
Web / H5
Use HTTPS or an allowed localhost development context. For iframe embedding, the parent page must allow camera/microphone access through Permissions Policy. Permission denial, missing devices and unavailable devices produce different errors; do not label every case a network failure. See getUserMedia.
Production builds must retain JS/WASM and whiteboard assets. Configure CSP, CORS, WebSocket connections and cross-origin media access for actual deployment addresses.
Network endpoints
| Request or resource | Address source |
|---|---|
| Classroom HTTP | Client backendUrl |
| IM HTTP / WebSocket | Join im.apiAddr / im.wsAddr |
| Whiteboard room service | Join whiteboard configuration |
| Telemetry ingestion | Join telemetry.ingestUrl |
| Courseware / whiteboard assets | Actual URLs in manifests or whiteboard responses |
Public clients cannot reach private service names or the deployment host's localhost. Correct server-provided addresses rather than rewriting them to another environment in the client.
Mini programs require request, download and WebSocket domain configuration plus platform media capabilities. The backend domain also serves teaching-tool sound assets. HarmonyOS and desktop hosts must provide OS permissions, trusted certificates and network capabilities.
Private whiteboard downloads use separate object storage and short-lived signed URLs. Configure the actual storage domain and CORS instead of substituting a public CDN. Obtain a new authorized URL after expiry; omit signed query parameters from logs.
Privacy integration
System permissions do not replace product privacy notices. Include SDK initialization, device identifiers, diagnostic uploads and actual providers in your review. See Data collection and Privacy and compliance integration.