All public wrappers follow the same semantic contract even when method names and async models differ.
Common operation map
Section titled “Common operation map”| Operation | Android | iOS | Node/Electron | .NET | C ABI |
|---|---|---|---|---|---|
| Create with consent | Builder.create | createWithConsent | Electron helper / constructor with receipt | WPF helper / options with receipt | Consent-aware constructor |
| Start | connect() | connect() | connect() | Connect() | sdk_connect |
| Online state | isOnline() | isOnline | isOnline() | IsOnline | sdk_is_online |
| Pause | disconnect() | disconnect() | disconnect() | Disconnect() | sdk_disconnect |
| Revoke | revokeConsent | revokeConsent | instance/static helper | RevokeAsync | Host consent implementation |
| Final release | close() | close() | free() | Dispose() | sdk_free |
Construction invariant
Section titled “Construction invariant”Protected UI wrappers create a native handle only after an accepted, verified decision. Node and non-WPF desktop hosts require an approved receipt source. Legacy boolean-only creation paths are not authorization.
Connect invariant
Section titled “Connect invariant”Every connect spelling starts the supervisor. It does not wait for online. Use the connected callback/event or online-state API.
Callback model
Section titled “Callback model”- Android: main Handler by default or caller-provided Executor.
- Kotlin: configured callback dispatcher and lifecycle flow.
- iOS: configured DispatchQueue.
- Node/Electron: JavaScript event loop via native-state polling.
- .NET: managed callbacks/events with exception containment.
- C: SDK runtime thread; application must marshal.
Identity options
Section titled “Identity options”Wrappers expose optional device identity seed/path configuration. Default platform persistence is preferred. Changing identity can invalidate a stored consent decision.
Terminal release
Section titled “Terminal release”Final release clears callbacks and frees native state. The application must drop its reference and make no further SDK call. A successful active-instance revoke is also terminal.
For exact code, use the platform guide. For native symbols and error accessors, see Native C ABI.