تلميح بشأن رقم الهاتف

توفر واجهة برمجة التطبيقات Phone Number Hint API التي تستخدمها خدمات Google Play طريقة سلسة لعرض أرقام هاتف المستخدم (المستندة إلى شريحة SIM) كتلميح.

تشمل مزايا استخدام تلميح رقم الهاتف ما يلي:

  • لا حاجة إلى الحصول على أذونات إضافية
  • التخلص من حاجة المستخدم إلى كتابة رقم الهاتف يدويًا
  • لا حاجة إلى حساب Google
  • غير مرتبط مباشرةً بمهام سير عمل تسجيل الدخول أو الاشتراك.
  • توفير المزيد من الدعم لإصدارات Android مقارنةً بميزة "الملء التلقائي"

قبل البدء

لإعداد تطبيقك، يُرجى إكمال الخطوات الواردة في الأقسام التالية.

إعداد تطبيقك

أضِف تبعية خدمات Google Play لواجهة برمجة تطبيقات رقم الهاتف Hint API إلى ملف إصدار Gradle للوحدة، الذي يكون عادةً app/build.gradle:

  apply plugin: 'com.android.application'

  ...

  dependencies {
    implementation 'com.google.android.gms:play-services-auth:20.7.0'
  }

آلية العمل

تستخدم واجهة برمجة التطبيقات Phone Number Hint API PendingIntent لبدء التدفق. بعد إطلاق رمز PendingIntent، سيتم تزويد المستخدم بواجهة مستخدم تسرد جميع أرقام الهواتف (المستندة إلى شريحة SIM). يمكن للمستخدم بعد ذلك اختيار تحديد رقم الهاتف الذي يريد استخدامه أو إلغاء التدفق. سيتم بعد ذلك إتاحة رقم الهاتف الذي تم تحديده لمطوّر البرامج لاسترداده من Intent.

واجهة المستخدم والإعدادات لتلميح رقم الهاتف
الشكل 1. واجهة المستخدم والإعدادات لتلميح رقم الهاتف

إنشاء كائن GetPhoneNumbeHintIntentRequest

ابدأ بإنشاء عنصر GetPhoneNumberHintIntentRequest باستخدام الطريقة GetPhoneNumberHintIntentRequest.Builder() المقدَّمة. يمكن بعد ذلك استخدام كائن الطلب هذا للحصول على Intent لبدء مسار "تلميح رقم الهاتف".

Kotlin

val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()

Java

GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

جارٍ طلب تلميح رقم الهاتف

يمكنك استدعاء SignInClient.getPhoneNumberHintIntent()، مع تمرير عنصر GetPhoneNumberHintIntentRequest السابق، لاسترداد PendingIntent لبدء مسار "تلميح رقم الهاتف".

Kotlin

val phoneNumberHintIntentResultLauncher = ...

Identity.getSignInClient(activity)
.getPhoneNumberHintIntent(request)
.addOnSuccessListener { result: PendingIntent ->
  try {
    phoneNumberHintIntentResultLauncher.launch(
      IntentSenderRequest.Builder(result).build()
    )
  } catch (e: Exception) {
      Log.e(TAG, "Launching the PendingIntent failed")
  }
}
.addOnFailureListener {
    Log.e(TAG, "Phone Number Hint failed")
}

Java

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

Identity.getSignInClient(activity)
  .getPhoneNumberHintIntent(request)
  .addOnSuccessListener( result -> {
      try {
          phoneNumberHintIntentResultLauncher.launch(result.getIntentSender());
      } catch(Exception e) {
          Log.e(TAG, "Launching the PendingIntent failed", e);
      }
  })
  .addOnFailureListener(e -> {
      Log.e(TAG, "Phone Number Hint failed", e);
  });

استرداد رقم الهاتف

أدخِل رمز Intent إلى SignInClient.getPhoneNumberFromIntent لاسترداد رقم الهاتف.

Kotlin

val phoneNumberHintIntentResultLauncher =
registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->
      try {
          val phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.data)
      } catch(e: Exception) {
          Log.e(TAG, "Phone Number Hint failed")
      }
  }

Java

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  registerForActivityResult(
      new ActivityResultContracts.StartActivityForResult(),
      new ActivityResultCallback() {
          @Override
          public void onActivityResult(ActivityResult result) {
              try {
                  String phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.getData());
              } catch {
                  Log.e(TAG, "Phone Number Hint failed", e);
              }
          }
  });