ادغام کردن Credential Manager با تکمیل خودکار

از Android 15 Beta 2، در ترکیب با androidx.credentials:1.5.0-alpha01، توسعه‌دهندگان می‌توانند نماهای خاصی مانند فیلدهای نام کاربری یا گذرواژه را با درخواست‌های «مدیر اطلاعات کاربری» پیوند دهند. وقتی کاربر روی یکی از این نماها تمرکز می‌کند، درخواست مربوطه به Credential Manager ارسال می‌شود. اعتبارنامه‌های حاصل در میان ارائه‌دهندگان جمع‌آوری می‌شوند و در واسط‌های کاربری تکمیل خودکار، مانند پیشنهادهای درون‌خطی صفحه‌کلید یا پیشنهادهای منو کرکره‌ای، نمایش داده می‌شوند. این ویژگی می‌تواند به‌عنوان جایگزین استفاده شود وقتی کاربران به‌طور تصادفی انتخابگر حساب Credential Manager را رد می‌کنند و سپس روی فیلدهای مربوطه ضربه می‌زنند.

کتابخانه Jetpack androidx.credentials نقطه پایانی ترجیحی برای توسعه‌دهندگان است تا از این ویژگی استفاده کنند.

تصویری که اطلاعات کاربری را در نتایج تکمیل خودکار نشان می‌دهد
شکل ۱: نتایج تکمیل خودکار با اطلاعات کاربری بااستفاده از گذرواژه، گذرکلید، و «ورود به سیستم با Google».

پیاده‌سازی

برای استفاده از «مدیر اطلاعات کاربری» جهت نمایش اطلاعات کاربری در نتایج تکمیل خودکار، از پیاده‌سازی استاندارد برای ساختن 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 API تماس بگیرید. با این کار، انتخابگر «مدیر اطلاعات کاربری» نمایش داده می‌شود.

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)
}