Auf dieser Seite wird erläutert, wie Sie reCAPTCHA Enterprise in Ihre iOS-App einbinden.
Aufgrund der Unterschiede bei Mobilgeräten in Bezug auf Bildschirmgröße, Leistung und Benutzeroberfläche der Apps ist die reCAPTCHA-Abfrage für das visuelle Kästchen (Ich bin kein Roboter) für mobile iOS-Apps nicht verfügbar. Sie können stattdessen Ihre eigene gestaffelte Erzwingungsstrategie implementieren, z. B. einen MFA-Ablauf, um einen alternativen Einlösungspfad für verdächtigen Traffic bereitzustellen.
Hinweise
Legen Sie als Mindest-SDK Ihrer App iOS 11 fest oder erstellen Sie eine neue mobile App.
Erstellen Sie einen reCAPTCHA-Schlüssel für die iOS-App-Plattform.
Alternativ können Sie die ID eines vorhandenen reCAPTCHA-Schlüssels für iOS kopieren. Führen Sie dazu einen der folgenden Schritte aus:
So kopieren Sie die ID eines vorhandenen Schlüssels aus der Google Cloud Console:
Rufen Sie die Seite reCAPTCHA Enterprise auf.
- Bewegen Sie den Mauszeiger in der Liste der reCAPTCHA-Schlüssel auf den Schlüssel, den Sie kopieren möchten, und klicken Sie dann auf .
- Wenn Sie die ID eines vorhandenen Schlüssels mithilfe der REST API kopieren möchten, verwenden Sie die Methode projects.keys.list.
- Wenn Sie die ID eines vorhandenen Schlüssels mithilfe der gcloud CLI kopieren möchten, verwenden Sie den Befehl gcloud reCAPTCHA keys list.
Sie haben ein GitHub-Konto.
iOS-Umgebung vorbereiten
So bereiten Sie die Entwicklungsumgebung vor:
Laden Sie die neueste Version von Xcode herunter, installieren Sie sie und erstellen Sie eine neue leere iOS-Single View-App.
Laden Sie das SDK mit einer der folgenden Methoden herunter:
CocoaPods
- Laden Sie CocoaPods herunter und installieren Sie es.
Erstellen Sie eine Podfile-Datei und fügen Sie ihr die folgenden Zeilen hinzu:
source "https://github.com/CocoaPods/Specs.git" target 'AppTarget' do # Podfiles must include use_frameworks! or # use_frameworks! :linkage => :static use_frameworks! pod "RecaptchaEnterprise", "18.5.0-beta02" ... end
Installieren Sie die erforderlichen Abhängigkeiten,. Dazu führen Sie
pod update
aus.
Swift-Paketmanager
- Wählen Sie in XCode File > Add Packages aus und geben Sie die folgende URL in das Feld Search (Suchen) oder Enter Package URL (Paket-URL eingeben) ein:
https://github.com/GoogleCloudPlatform/recaptcha-enterprise-mobile-sdk
Geben Sie im Dialogfeld XCode die folgenden Informationen ein:
- GitHub-Nutzername.
- Ein persönliches Zugriffstoken, das Sie mithilfe der Anleitung von GitHub erstellt haben. Für das Personal Access Token (Persönliche Zugriffstoken) müssen die Bereiche vorhanden sein, die im Dialogfeld XCode Sign In (XCode-Anmeldung) aufgeführt sind.
Xcode installiert das SDK und die erforderlichen Abhängigkeiten.
Flutter
Eine ausführliche Anleitung zur Verwendung von reCAPTCHA Enterprise mit Flutter finden Sie in der Dokumentation zu Flutter.
ReactNative
Eine ausführliche Anleitung zur Verwendung von reCAPTCHA Enterprise über React Native finden Sie in der Dokumentation zu React Native.
Direkter Download
Wenn Sie das SDK und seine Abhängigkeiten als xcframeworks herunterladen möchten, laden Sie den client herunter.
App konfigurieren
Sie können Ihre Apps in Swift oder Objective-C schreiben.
Fügen Sie die folgenden Dateien hinzu, um Ihre App zu konfigurieren:
Swift
Wenn Ihre App in Swift geschrieben ist, erstellen Sie einen Objective-C-Brücken-Header und schließen Sie den folgenden Import ein:
#import <RecaptchaEnterprise/RecaptchaEnterprise.h>
Objective-C
Wenn Ihre App in Objective-C geschrieben ist, erstellen Sie eine Dummy-Swift-Datei und fügen Sie den folgenden Import ein, damit Xcode die Swift-Bibliotheken finden und verknüpfen kann.
import Foundation
Um sicherzustellen, dass der
Swift
-Code korrekt verknüpft ist, gehen Sie zu Ziel > Build-Einstellungen > Swift-Standardbibliotheken immer einbetten und prüfen Sie, ob die Option aufYes
festgelegt ist.
reCAPTCHA Enterprise in Ihre iOS-App einbinden
Führen Sie folgende Schritte in Xcode aus, um reCAPTCHA Enterprise in Ihre iOS-App einzubinden:
Um das SDK mit dem von Ihnen erstellten reCAPTCHA-Schlüssel (KEY_ID) zu instanziieren, aktualisieren Sie die App mit dem folgenden Code:
Swift mit Storyboard
ViewController.swift
aktualisieren.Wenn du CocoaPods verwendest, kannst du die Zeile
import RecaptchaEnterprise
ignorieren, da die Importanweisung#import <RecaptchaEnterprise/RecaptchaEnterprise.h>
in der Datei*-Bridging-Header.h
ausreicht.import RecaptchaEnterprise class ViewController: UIViewController { var recaptchaClient: RecaptchaClient? override func viewDidLoad() { super.viewDidLoad() Task { do { let client = try await Recaptcha.getClient(withSiteKey: "KEY_ID") self.recaptchaClient = client } catch let error as RecaptchaError { print("RecaptchaClient creation error: \(String(describing: error.errorMessage)).") } } } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen nachgestellten Abschluss:
import RecaptchaEnterprise class ViewController: UIViewController { var recaptchaClient: RecaptchaClient? override func viewDidLoad() { super.viewDidLoad() Recaptcha.getClient(withSiteKey: "KEY_ID") { client, error in guard let client = client else { print("RecaptchaClient creation error: \(error).") return } self.recaptchaClient = client } } }
Swift mit SwiftUI
Erstellen Sie eine
ViewModel
-Klasse.Wenn du CocoaPods verwendest, kannst du die Zeile
import RecaptchaEnterprise
ignorieren, da die Importanweisung#import <RecaptchaEnterprise/RecaptchaEnterprise.h>
in der Datei*-Bridging-Header.h
ausreicht.import RecaptchaEnterprise @MainActor class ViewModel: ObservableObject { private var recaptchaClient: RecaptchaClient? init() { Task { do { let client = try await Recaptcha.getClient(withSiteKey: "KEY_ID") self.recaptchaClient = client } catch let error as RecaptchaError { print("RecaptchaClient creation error: \(String(describing: error.errorMessage)).") } } } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen nachgestellten Abschluss:
import RecaptchaEnterprise class ViewController: UIViewController { var recaptchaClient: RecaptchaClient? override func viewDidLoad() { super.viewDidLoad() Recaptcha.getClient(withSiteKey: "KEY_ID") { client, error in guard let client = client else { print("RecaptchaClient creation error: \(error).") return } self.recaptchaClient = client } } }
Instanziieren Sie
ViewModel
inContentView.swift
.import SwiftUI import RecaptchaEnterprise struct ContentView: View { @StateObject private var viewModel = ViewModel() var body: some View { } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
Objective-C
ViewController.h
aktualisieren.#import <RecaptchaEnterprise/RecaptchaEnterprise.h> @interface ViewController : UIViewController @property (strong, atomic) RecaptchaClient *recaptchaClient; @end
ViewController.m
aktualisieren.@implementation ViewController [Recaptcha getClientWithSiteKey:@"KEY_ID" completion:^void(RecaptchaClient* recaptchaClient, NSError* error) { if (!recaptchaClient) { NSLog(@"%@", (RecaptchaError *)error.errorMessage); return; } self->_recaptchaClient = recaptchaClient; } ]; @end
Erstellen Sie eine Schaltfläche zum Aufrufen von reCAPTCHA Enterprise und lösen Sie
execute()
aus.Swift mit Storyboard
- Erstellen Sie im Storyboard eine Schaltfläche.
- Erstellen Sie in
ViewController
eine Aktion, die mit der von Ihnen erstellten Schaltfläche verknüpft ist. Rufen Sie die Methode
execute()
auf und übergeben Sie die AktionLogin
, um ein reCAPTCHA-Token zurückzugeben. Verwenden Sie dazu das folgende Code-Snippet:guard let recaptchaClient = recaptchaClient else { print("RecaptchaClient creation failed.") return } Task { do { let token = try await recaptchaClient.execute(withAction: RecaptchaAction.login) print(token) } catch let error as RecaptchaError { print(error.errorMessage) } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen nachgestellten Abschluss:
guard let recaptchaClient = recaptchaClient else { print("RecaptchaClient creation failed.") return } recaptchaClient.execute(withAction: RecaptchaAction.login) { token, error in if let token = token { print(token) } else { print(error) } }
Swift mit SwiftUI
Aktualisieren Sie ViewModel.swift mit dem Code zum Ausführen:
import RecaptchaEnterprise @MainActor class ViewModel: ObservableObject { func execute() { guard let recaptchaClient = self.recaptchaClient else { print("Client not initialized correctly.") return } Task { do { let token = try await recaptchaClient.execute(withAction: RecaptchaAction.login) print(token) } catch let error as RecaptchaError { print(error.errorMessage) } } } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen nachgestellten Abschluss:
guard let recaptchaClient = recaptchaClient else { print("RecaptchaClient creation failed.") return } recaptchaClient.execute(withAction: RecaptchaAction.login) { token, error in if let token = token { print(token) } else { print(error) } }
ContentView.swift aktualisieren.
import SwiftUI import RecaptchaEnterprise struct ContentView: View { @StateObject private var viewModel = ViewModel() var body: some View { Button { viewModel.execute() } label: { Text("Execute") }.padding() Spacer() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
Objective-C
- Erstellen Sie im Storyboard eine Schaltfläche.
- Erstellen Sie in
ViewController
eine Aktion, die mit der von Ihnen erstellten Schaltfläche verknüpft ist. Rufen Sie die Methode
execute()
auf und übergeben Sie die AktionLogin
, um ein reCAPTCHA-Token zurückzugeben. Verwenden Sie dazu das folgende Code-Snippet:if (!self->_recaptchaClient) { return; } [recaptchaClient execute:RecaptchaAction.login completion:^void(NSString* _Nullable token, NSError* _Nullable error) { if (!token) { NSLog (@"%@", (RecaptchaError *)error.errorMessage); return; } NSLog (@"%@", token); }];
Ihre Anwendung testen:
reCAPTCHA Enterprise verwendet AppAttest von Apple als Teil der Erkennungs-Engine. Wenn Sie keinen Testschlüssel mit einem festen Wert für die lokale Entwicklung verwenden möchten, gehen Sie so vor:
Fügen Sie Ihrer App in Xcode die Funktion App Attest hinzu.
Legen Sie in der Datei
.entitlements
Ihres Projekts die App Attest-Umgebung aufproduction
fest.
Klicken Sie zum Bereinigen der Xcode-Build-Umgebung im Menü Produkt auf Build-Ordner bereinigen.
Klicken Sie zum Ausführen der Anwendung im Menü Produkt auf Ausführen.
Klicken Sie in der geladenen Anwendung auf die Schaltfläche, die Sie zuvor erstellt haben.
Beobachten Sie das Debug-Ausgabefenster für ein reCAPTCHA-Token (alphanumerischer String), das zurückgegeben wird, wenn die Integration erfolgreich ist.
Zeitlimit für API-Aufrufe festlegen
Mit dem Attribut withTimeout
der einzelnen APIs können Sie einen Zeitüberschreitungswert für die APIs getClient
und execute
angeben.
Swift
Zeitlimit beim Aufrufen von
getClient
festlegen.Task { do { self.recaptchaClient = try await Recaptcha.getClient( withSiteKey: "KEY_ID", withTimeout: 15000 ) } catch let error as RecaptchaError { print("RecaptchaClient creation error: \(String(describing: error.errorMessage)).") } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen abschließenden Closure:
Recaptcha.getClient( withSiteKey: "KEY_ID", withTimeout: 15000 ) { client, error in guard let client = client else { print("RecaptchaClient creation error: \(error).") return } self.recaptchaClient = client }
Zeitlimit beim Aufrufen von
execute
festlegen.Task { do { let token = try await recaptchaClient.execute( withAction: RecaptchaAction.login, withTimeout: 10000) print(token) } catch let error as RecaptchaError { print(error.errorMessage) } }
Wenn die Mindestversion des Betriebssystems Ihrer Anwendung kleiner als 13 ist, verwenden Sie stattdessen einen abschließenden Closure:
recaptchaClient.execute( withAction: RecaptchaAction.login, withTimeout: 10000 ) { token, error in if let token = token { print(token) } else { print(error) } }
Objective-C
Zeitlimit beim Aufrufen von
getClient
festlegen.[Recaptcha getClientWithSiteKey:@"KEY_ID" withTimeout:15000.0 completion:^void(RecaptchaClient *recaptchaClient, NSError *error) { if (!recaptchaClient) { NSLog(@"%@", (RecaptchaError *)error.errorMessage); return; } self->_recaptchaClient = recaptchaClient; }];
Zeitlimit beim Aufrufen von
execute
festlegen.[recaptchaClient execute:RecaptchaAction.login witTimeout:10000.0 completion:^void(NSString* _Nullable token, NSError* _Nullable error) { if (!token) { NSLog (@"%@", (RecaptchaError *)error.errorMessage); return; } NSLog (@"%@", token); }];
API-Referenz
Eine vollständige Referenz der reCAPTCHA API for iOS finden Sie unter RecaptchaEnterprise
.
Nächste Schritte
Um das reCAPTCHA-Antworttoken zu bewerten, erstellen Sie eine Bewertung.