iOS-Capture
Öffnen Sie die Erfassung in einer System-Browser-Sitzung und führen Sie die Person zurück in Ihre App.
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
| Datei | Zweck |
|---|---|
CaptureContextProvider.swift | Presentation-Context-Provider |
CaptureSessionManager.swift | Lebenszyklus der ASWebAuthenticationSession |