الانتقال إلى المحتوى الرئيسي
الالتقاط على iOS

افتح الالتقاط في جلسة متصفح النظام وأعد الشخص إلى تطبيقك.

Markdown

تنشئ الواجهة الخلفية لديك العملية في Human Plugin بتدفق Journey وcallbackUri يستخدم مخطط URL الخاص بتطبيقك. يفتح التطبيق link من الاستجابة في ASWebAuthenticationSession. عند انتهاء الالتقاط، تعود الجلسة إلى التطبيق عبر مخططك.

احتفظ بـ id الخاص بـ Human Plugin من استجابة الإنشاء. ستقرأ الواجهة الخلفية لديك النتيجة به.

المتطلبات الأساسية​

  • iOS 13 أو أحدث
  • Xcode 14 أو أحدث
  • إطار العمل AuthenticationServices (مدمج)
  • مخطط URL فريد لتطبيقك، مثل myapp

1. أنشئ العملية بمخططك​

ترسل الواجهة الخلفية لديك المخطط بوصفه callbackUri:

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

وتعيد id وlink إلى التطبيق.

2. أنشئ مزوّد سياق العرض​

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. أنشئ مدير الجلسة​

import AuthenticationServices

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

/// يستدعي completion بالقيمة true عند انتهاء الالتقاط، وfalse عند إغلاق الشخص له.
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
}
}
معلومة

يقبل callbackURLScheme اسم المخطط فقط (myapp)، دون ://.

4. ابدأ الالتقاط​

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

CaptureSessionManager.shared.start(link: url) { ended in
if ended {
// انتهى الالتقاط. اطلب من الواجهة الخلفية لديك قراءة النتيجة
// عبر GET /v1/processes/{id}، باستخدام id الخاص بـ Human Plugin.
} else {
// أغلق الشخص الجلسة.
}
}

الملخص​

الملفالغرض
CaptureContextProvider.swiftمزوّد سياق العرض
CaptureSessionManager.swiftدورة حياة ASWebAuthenticationSession