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:
In Xcode fügen Sie das Paket alternativ über File > Add Package Dependencies hinzu.
Mit CocoaPods ergänzen Sie die Datei Podfile:
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.