راهنمایی شماره تلفن

رابط برنامه‌نویسی کاربردی (API) راهنمای شماره تلفن (Phone Number Hint)، کتابخانه‌ای که توسط سرویس‌های گوگل پلی پشتیبانی می‌شود، روشی آسان برای نمایش شماره تلفن‌های کاربر (مبتنی بر سیم‌کارت) به عنوان راهنما ارائه می‌دهد.

مزایای استفاده از Phone Number Hint شامل موارد زیر است:

  • هیچ درخواست مجوز اضافی لازم نیست
  • نیاز کاربر به تایپ دستی شماره تلفن را از بین می‌برد
  • هیچ حساب گوگلی لازم نیست
  • مستقیماً به گردش‌های ورود یا ثبت‌نام مرتبط نیست
  • پشتیبانی گسترده‌تر از نسخه‌های اندروید در مقایسه با Autofill

چگونه کار می‌کند؟

API مربوط به Phone Number Hint از یک PendingIntent برای شروع جریان استفاده می‌کند. پس از اجرای PendingIntent، یک رابط کاربری به کاربر نمایش داده می‌شود که تمام شماره تلفن‌های (مبتنی بر سیم‌کارت) را فهرست می‌کند. سپس کاربر می‌تواند شماره تلفنی را که می‌خواهد استفاده کند انتخاب کند یا جریان را لغو کند. سپس شماره تلفن انتخاب شده برای بازیابی از Intent در اختیار توسعه‌دهنده قرار می‌گیرد.

رابط کاربری و تنظیمات راهنمای شماره تلفن.
شکل ۱. رابط کاربری و تنظیمات راهنمای شماره تلفن

برای آماده‌سازی برنامه خود، مراحل بخش‌های زیر را تکمیل کنید.

برنامه خود را پیکربندی کنید

وابستگی سرویس‌های گوگل پلی برای API مربوط به Phone Number Hint را به فایل Gradle build ماژول خود که معمولاً app/build.gradle است، اضافه کنید:

  apply plugin: 'com.android.application'

  ...

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

یک شیء GetPhoneNumbeHintIntentRequest ایجاد کنید

با ایجاد یک شیء GetPhoneNumberHintIntentRequest با استفاده از متد GetPhoneNumberHintIntentRequest.Builder() ارائه شده، شروع کنید. سپس می‌توان از این شیء درخواست برای دریافت یک Intent جهت شروع جریان Phone Number Hint استفاده کرد.

کاتلین

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

جاوا

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

درخواست راهنمایی برای شماره تلفن

فراخوانی SignInClient.getPhoneNumberHintIntent() که شیء GetPhoneNumberHintIntentRequest قبلی را ارسال می‌کند، برای بازیابی PendingIntent جهت آغاز جریان Phone Number Hint.

کاتلین

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

جاوا

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 ارسال کنید.

کاتلین

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

جاوا

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