تلميح رقم الهاتف

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

تتضمن فوائد استخدام تلميح رقم الهاتف ما يلي:

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

قبل البدء

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

تهيئة تطبيقك

يمكنك إضافة تبعيّة خدمات Google Play لواجهة برمجة التطبيقات لتلميح رقم الهاتف إلى ملف إنشاء Gradle في وحدتك، والتي تكون عادةً app/build.gradle:

  apply plugin: 'com.android.application'

  ...

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

آلية العمل

تستخدم واجهة برمجة التطبيقات Hint 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);
              }
          }
  });