# A native app on Apple platforms **What it shows.** The WAI native sink in a SwiftUI app. The platform's player plays as it always does; the sink sits on the path of its requests, verifies each playlist against its receipt and each object against the hash its name states, withholds what does not verify, signs an acknowledgement of what was received, and at the end signs a bundle the stream's owner verifies. `--replay` runs a recorded playback session through the same sink with no window, and checks the bundle. **Run it.** The sink is the `wai-sink-swift` package of the WAI repository; build it once (macOS with Xcode), then point this project at it: ```sh wai create my-app --template apple-app cd /wai/wai-sink-swift && WAI_SINK_SLICES=macos scripts/build-xcframework.sh cd my-app export WAI_SINK_SWIFT=/wai/wai-sink-swift swift run WaiApp --replay sample-session.json swift run WaiApp ``` **What you see.** The replay prints how many playlists and objects went through the sink and that the bundle verifies. The player opens a window: give it an HLS address (the `package-and-deliver` example's, under `wai dev`, by default) and press **Play**. **Make it yours.** `PlayerApp.swift` is the whole integration: a `WaiSink.Config`, a `WaiPlayerSession`, and its `player` in a `VideoPlayer`. For a stream its owner seals, set `requireSigned: true`, and nothing the owner did not sign reaches the decoder. **With a coding assistant.** Run `wai setup-agent` in this directory: it writes the instructions an assistant reads and connects it to WAI's tools. **License.** Apache-2.0: the text is in `LICENSE`, and a project `wai create` makes from this example carries it.