Schnellstart: UESPA mit iOS / macOS (Swift)

Wrapper: uespa-ffi + UniFFI · Ziele: aarch64-apple-ios, -ios-sim, aarch64/x86_64-apple-darwin

1. Konto, App-ID und LicenseCert

Lege im Developer-Portal eine App mit der App-ID deiner Anwendung an und stelle ein LicenseCert aus. Das Zertifikat ist 294 Byte groß, wird offline geprüft und gilt nur für genau diese App-ID. Details: Lizenzen, App-IDs & Mandanten.

2. Einbinden

XCFramework und Swift-Bindings

bash
scripts/cross-build.sh            # Apple-Targets
scripts/gen-bindings.sh out/      # out/swift/*.swift + Modulemap ins Xcode-Projekt

3. Initialisieren und senden

swift
let cert = Data(base64Encoded: licenseB64)!
let uespa = try UespaClient(port: 0, hostAppId: Bundle.main.bundleIdentifier!,
                            cert: cert, deviceSeed: deviceSeed)

try uespa.busSubscribe(filter: "home/+/temp")
try uespa.chatSend(peer: peerPk, text: "Hallo")

final class Listener: UespaListener {
    func onEvent(event: UespaEventKt) {
        if case let .chatMessage(from, text) = event { print(from, text) }
    }
}
let listener = Listener()
Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true) { _ in uespa.tick(listener: listener) }

Hinweise

  • deviceSeed in der Keychain/Secure Enclave halten.
  • hostAppId = Bundle-ID; muss zur app_id im Zertifikat passen.
  • Das Gerät leitet immer auch Pakete anderer Apps verschlüsselt weiter (Zwangs-Hop) – zugestellt wird nur im eigenen Namespace.
  • Rendezvous für Internet-P2P: rendezvous.uespa.io:47401 (UDP), Authority: https://uespa.io/v1/authority.