Zum Hauptinhalt springen
iOS-Capture

Öffnen Sie die Erfassung in einer System-Browser-Sitzung und führen Sie die Person zurück in Ihre App.

Markdown

Ihr Backend erstellt den Prozess in Human Plugin mit einem Journey-Flow und einer callbackUri, die das URL-Schema Ihrer App verwendet. Die App öffnet den link aus der Antwort in einer ASWebAuthenticationSession. Wenn die Erfassung endet, kehrt die Sitzung über Ihr Schema in die App zurück.

Behalten Sie die Human-Plugin-id aus der Create-Antwort. Ihr Backend liest damit das Ergebnis.

Voraussetzungen​

  • iOS 13 oder höher
  • Xcode 14 oder höher
  • Das Framework AuthenticationServices (integriert)
  • Ein für Ihre App eindeutiges URL-Schema, etwa myapp

1. Den Prozess mit Ihrem Schema erstellen​

Ihr Backend sendet das Schema als callbackUri:

{
"flow": "humantoken",
"clientId": "client-a",
"correlationId": "order-1001",
"credential": { "type": "DUI_TYPE_NG_BVN", "value": "<document number>" },
"callbackUri": "myapp://callback"
}

und gibt id und link an die App zurück.

2. Den Presentation-Context-Provider erstellen​

import AuthenticationServices
import UIKit

class CaptureContextProvider: NSObject, ASWebAuthenticationPresentationContextProviding {
func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let window = windowScene.windows.first else {
return ASPresentationAnchor()
}
return window
}
}

3. Den Session-Manager erstellen​

import AuthenticationServices

class CaptureSessionManager {
static let shared = CaptureSessionManager()
private var session: ASWebAuthenticationSession?
private let contextProvider = CaptureContextProvider()

/// Ruft completion mit true auf, wenn die Erfassung beendet wurde, und mit false, wenn die Person sie geschlossen hat.
func start(link: URL, completion: @escaping (Bool) -> Void) {
let newSession = ASWebAuthenticationSession(
url: link,
callbackURLScheme: "myapp"
) { callbackURL, _ in
self.session = nil
completion(callbackURL != nil)
}
newSession.presentationContextProvider = contextProvider
newSession.prefersEphemeralWebBrowserSession = true
newSession.start()
session = newSession
}
}
Information

callbackURLScheme erwartet nur den Schema-Namen (myapp), ohne ://.

4. Die Erfassung starten​

guard let url = URL(string: link) else { return }

CaptureSessionManager.shared.start(link: url) { ended in
if ended {
// Die Erfassung ist beendet. Bitten Sie Ihr Backend, das Ergebnis
// mit GET /v1/processes/{id} über die Human-Plugin-id zu lesen.
} else {
// Die Person hat die Sitzung geschlossen.
}
}

Zusammenfassung​

DateiZweck
CaptureContextProvider.swiftPresentation-Context-Provider
CaptureSessionManager.swiftLebenszyklus der ASWebAuthenticationSession