دمج "مدير بيانات الاعتماد" مع ميزة "الملء التلقائي"

بدءًا من الإصدار التجريبي 2 من Android 15، يمكن للمطوّرين ربط طرق عرض معيّنة، مثل حقول اسم المستخدم أو كلمة المرور، بطلبات "مدير بيانات الاعتماد"، وذلك عند استخدام الإصدار androidx.credentials:1.5.0-alpha01. عندما يركّز المستخدم على أحد طرق العرض هذه، يتم إرسال الطلب المقابل إلى "مدير بيانات الاعتماد". يتم تجميع بيانات الاعتماد الناتجة من مختلف مقدّمي الخدمات وعرضها في واجهات المستخدم الخاصة بميزة "الملء التلقائي"، مثل الاقتراحات المضمّنة في لوحة المفاتيح أو الاقتراحات في القائمة المنسدلة. يمكن استخدام هذه الميزة كحلّ احتياطي عندما يرفض المستخدمون عن طريق الخطأ أداة اختيار الحساب في Credential Manager ثم ينقرون على الحقول ذات الصلة.

مكتبة Jetpack androidx.credentials هي نقطة النهاية المفضّلة التي يمكن للمطوّرين استخدامها لهذه الميزة.

صورة توضيحية تعرض بيانات الاعتماد في نتائج الملء التلقائي
الشكل 1: نتائج الملء التلقائي باستخدام بيانات الاعتماد وكلمة المرور ومفتاح المرور و"تسجيل الدخول باستخدام Google"

التنفيذ

لاستخدام Credential Manager لعرض بيانات الاعتماد في نتائج التعبئة التلقائية، استخدِم عملية التنفيذ العادية لإنشاء GetCredentialRequest ثم اضبطها على طرق العرض ذات الصلة. تكون طريقة معالجة الردود هي نفسها، سواء كان الرد من طلب البيانات من واجهة برمجة التطبيقات getCredential أو من PendingGetCredentialRequest، كما هو موضّح في المثال التالي.

أولاً، أنشئ GetCredentialRequest:

// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()

// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
  requestJson = requestJson
)

val getCredRequest = GetCredentialRequest(
  listOf(getPasswordOption, getPublicKeyCredentialOption)
)

بعد ذلك، استدعِ واجهة برمجة التطبيقات getCredential. يؤدي ذلك إلى عرض أداة اختيار "مدير بيانات الاعتماد".

coroutineScope {
  try {
    val result = credentialManager.getCredential(
      context = activityContext, // Use an activity-based context.
      request = getCredRequest
    )
    handleSignIn(result);
  } catch (e: GetCredentialException) {
    handleFailure(e);
  }
}

أخيرًا، فعِّل تجربة الملء التلقائي. اضبط getCredRequest على الملفات الشخصية ذات الصلة (مثل username, password) لتفعيل نتائج بيانات الاعتماد في الملء التلقائي عندما يتفاعل المستخدم مع هذه الملفات الشخصية.

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}