Telefon Numarası İpucu

Google Play Hizmetleri tarafından desteklenen bir kitaplık olan Telefon Numarası İpucu API'si, kullanıcının (SIM tabanlı) telefon numaralarını ipucu olarak göstermenin sorunsuz bir yolunu sunar.

Telefon numarası ipucu kullanmanın avantajları şunlardır:

  • Ek izin isteğinde bulunmanıza gerek yoktur.
  • Kullanıcının telefon numarasını manuel olarak yazması gerekmez.
  • Google Hesabı gerekmez
  • Doğrudan oturum açma/kaydolma iş akışlarına bağlı değildir.
  • Otomatik doldurmaya kıyasla Android sürümleri için daha geniş destek

Başlamadan önce

Uygulamanızı hazırlamak için aşağıdaki bölümlerdeki adımları tamamlayın.

Uygulamanızı yapılandırma

Telefon Numarası İpucu API'si için Google Play Hizmetleri bağımlılığını, genellikle app/build.gradle olan modülünüzün Gradle derleme dosyasına ekleyin:

  apply plugin: 'com.android.application'

  ...

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

İşleyiş şekli

Telefon Numarası İpucu API'si, akışı başlatmak için bir PendingIntent kullanır. PendingIntent başlatıldıktan sonra kullanıcıya tüm (SIM tabanlı) telefon numaralarını listeleyen bir kullanıcı arayüzü gösterilir. Kullanıcı, kullanmak istediği telefon numarasını seçebilir veya akışı iptal edebilir. Ardından, seçilen telefon numarası geliştiricinin Intent'den alabilmesi için kullanılabilir hale getirilir.

Telefon numarası ipucu kullanıcı arayüzü ve ayarları.
Şekil 1. Telefon Numarası İpucu Kullanıcı Arayüzü ve Ayarları

GetPhoneNumbeHintIntentRequest nesnesi oluşturma

Sağlanan GetPhoneNumberHintIntentRequest.Builder() yöntemini kullanarak bir GetPhoneNumberHintIntentRequest nesnesi oluşturarak başlayın. Bu istek nesnesi daha sonra Telefon Numarası İpucu akışını başlatmak için bir Intent almak üzere kullanılabilir.

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

Telefon numarası istemeyle ilgili ipucu

Telefon numarası ipucu akışını başlatmak için önceki GetPhoneNumberHintIntentRequest nesnesini ileterek PendingIntent öğesini almak üzere SignInClient.getPhoneNumberHintIntent() işlevini çağırın.

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

Telefon numarasını alma

Telefon numarasını almak için Intent öğesini SignInClient.getPhoneNumberFromIntent öğesine iletin.

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