Zum Inhalt
Myra EU CAPTCHA Online-Hilfe Stand · 25.08.2026

iOS

Das SDK für iOS bettet das Widget in eine WKWebView ein und stellt eine Schnittstelle in Swift bereit.

Voraussetzungen

Die folgenden Voraussetzungen müssen erfüllt sein:

Voraussetzung Wert
iOS ab Version 13.0
Swift ab Version 5.5
Xcode ab Version 13
Zugangsdaten Öffentlicher Sitekey aus der Ansicht Details

SDK einbinden

Mit dem Swift Package Manager ergänzen Sie die Abhängigkeiten in Package.swift:

.package(url: "https://github.com/Myra-Security-GmbH/eu-captcha-ios-sdk.git", from: "1.0.0")

In Xcode fügen Sie das Paket alternativ über File > Add Package Dependencies hinzu.

Mit CocoaPods ergänzen Sie die Datei Podfile:

pod 'EuCaptcha', '~> 1.0'

Führen Sie anschließend pod install aus.

Widget erzeugen

import EuCaptcha

let widget = EuCaptchaSDK.createWidget(
    sitekey: "EUCAPTCHA_SITE_KEY",
    theme: .auto,          // .light, .dark, or .auto
    language: "en"         // BCP 47 language code; defaults to system language
)

Der Wert theme steuert die Darstellung mit .light, .dark und .auto. Der Wert language erwartet einen Sprachcode nach BCP 47. Ohne Angabe gilt die Sprache des Geräts.

Ereignisse auswerten

widget.onComplete = { event in
    // event.response is the token to verify server-side
    submitTokenToServer(event.response)
}

widget.onExpire = { _ in
    // The token has expired; the widget resets automatically
    disableLoginButton()
}

widget.onError = { _ in
    // An error occurred during the proof-of-work
    showErrorMessage()
}

widget.onStateChange = { event in
    print("State:", event.state, "Response:", event.response)
}

Widget einbetten

let widgetVC = widget.viewController()
addChild(widgetVC)
view.addSubview(widgetVC.view)
widgetVC.didMove(toParent: self)

widgetVC.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    widgetVC.view.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16),
    widgetVC.view.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16),
    widgetVC.view.heightAnchor.constraint(equalToConstant: EuCaptchaSDK.preferredHeight),
])

Lebenszyklus des Widgets

Methode Wirkung
start() Ohne Wirkung. Das Widget startet selbstständig.
reset() Verwirft den Zustand und startet eine neue Challenge.
destroy() Gibt die Ressourcen frei. Verwenden Sie die Referenz danach nicht mehr.
getResponse() Gibt das aktuelle Token zurück.
getState() Gibt den aktuellen Zustand EuCaptchaWidgetState zurück.

Zustände des Widgets

Zustand Bedeutung
.initial Das Widget ist eingerichtet, aber noch nicht aktiv.
.checking Die Challenge läuft.
.completed Die Challenge ist bestanden. Das Feld response enthält das Token.
.expired Das Token ist abgelaufen.
.error Es ist ein Fehler aufgetreten.
.destroyed Das Widget wurde abgebaut.

Token prüfen

Senden Sie den Wert event.response als client_token an Ihren Server. Der Server prüft das Token:

POST https://api.eu-captcha.eu/v1/verify
Content-Type: application/json

{
  "sitekey":           "EUCAPTCHA_SITE_KEY",
  "secret":            "EUCAPTCHA_SECRET_KEY",
  "client_ip":         "<client IP address>",
  "client_token":      "<token from the widget>",
  "client_user_agent": "<client user-agent>"
}

Die Antwort lautet { "success": true, "train": false }.

Siehe Endpunkt /verify.