Lewati ke konten utama
Pengambilan di iOS

Buka pengambilan dalam sesi browser sistem dan bawa orang tersebut kembali ke aplikasi Anda.

Markdown

Back-end Anda membuat proses di Human Plugin dengan alur Journey dan callbackUri yang menggunakan URL scheme aplikasi Anda. Aplikasi membuka link dari respons dalam ASWebAuthenticationSession. Saat pengambilan berakhir, sesi kembali ke aplikasi melalui scheme Anda.

Simpan id Human Plugin dari respons pembuatan. Back-end Anda membaca hasilnya dengannya.

Prasyarat​

  • iOS 13 atau lebih baru
  • Xcode 14 atau lebih baru
  • Framework AuthenticationServices (bawaan)
  • URL scheme yang unik untuk aplikasi Anda, seperti myapp

1. Buat proses dengan scheme Anda​

Back-end Anda mengirim scheme sebagai callbackUri:

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

dan mengembalikan id serta link ke aplikasi.

2. Buat presentation context provider​

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. Buat session manager​

import AuthenticationServices

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

/// Calls completion with true when the capture ended, false when the person closed it.
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
}
}
informasi

callbackURLScheme hanya menerima nama scheme (myapp), tanpa ://.

4. Mulai pengambilan​

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

CaptureSessionManager.shared.start(link: url) { ended in
if ended {
// The capture ended. Ask your back-end to read the outcome
// with GET /v1/processes/{id}, using the Human Plugin id.
} else {
// The person closed the session.
}
}

Ringkasan​

FileTujuan
CaptureContextProvider.swiftPresentation context provider
CaptureSessionManager.swiftSiklus hidup ASWebAuthenticationSession