Telefon Numarası İpucu

Google Play Hizmetleri tarafından desteklenen bir kitaplık olan Phone Number ipucu API'si, kullanıcının (SIM tabanlı) telefon numaralarını ipucu olarak göstermek için sorunsuz bir yol sağlar.

Telefon Numarası İpucu kullanmanın avantajları şunlardır:

  • Ek izin isteği gerekmez
  • Kullanıcının telefon numarasını manuel olarak yazma ihtiyacını ortadan kaldırır.
  • Google hesabı gerekli değildir
  • Oturum açma/kayıt iş akışlarına doğrudan bağlı değil
  • Otomatik doldurmaya kıyasla Android sürümleri için daha fazla destek

Başlamadan önce

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

Uygulamanızı yapılandırma

Proje düzeyindeki build.gradle dosyanıza Google's Maven deposunu hem buildscript hem de allprojects bölümlerinize ekleyin:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Telefon Numarası İpucu API'si için Google Play hizmetleri bağımlılığını module's Gradle derleme dosyanıza ekleyin. Bu dosya genellikle app/build.gradle şeklindedir:

  dependencies {
    implementation 'com.google.android.gms:play-services-auth:20.2.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ü sunulur. Bunun ardından kullanıcı, kullanmak istediği bir telefon numarasını seçmeyi veya akışı iptal etmeyi tercih edebilir. Seçili telefon numarası daha sonra Intent üzerinden alması için geliştiriciye iletilir.

Telefon Numarası İpucu 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, Telefon Numarası İpucu akışını başlatmak üzere Intent değerini almak için kullanılabilir.

Kotlin

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

Java

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

Telefon Numarası İpucu İsteme

Telefon Numarası İpucu akışını başlatmak amacıyla PendingIntent öğesini almak için önceki GetPhoneNumberHintIntentRequest nesnesini ileten SignInClient.getPhoneNumberHintIntent() numaralı telefonu arayın.

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher = ...

Identity.signInClient(activity)
  .getPhoneNumberHintIntent(request)
  .addOnSuccessListener(
      try {
          phoneNumberHintIntentResultLauncher.launch(request.getIntentSender())
      } 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);
  });

Telefon Numarasını Alma

Telefon numarasını almak için Intent numarasını SignInClient.getPhoneNumberFromIntent adresine iletin.

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher =
  registerForActivityResult(StartActivityForResult()) { result ->
      try {
          val phoneNumber = Identity.signInClient(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);
              }
          }
  });