توفر واجهة برمجة التطبيقات لأرقام الهاتف - التي تدعمها خدمات 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.1'
}
آلية العمل
تستخدم واجهة برمجة التطبيقات Hint Number Hint API الرمز PendingIntent
لبدء التدفق. وبعد إطلاق PendingIntent، سيتم عرض واجهة المستخدم على المستخدم مع إدراج جميع أرقام الهواتف (المستندة إلى شريحة SIM). ويمكن للمستخدم حينئذٍ أن يختار
تحديد رقم هاتف يريد استخدامه أو إلغاء التدفق.
وستتم بعد ذلك إتاحة رقم الهاتف المحدد لمطوّر البرامج لاسترداده من Intent
.

إنشاء كائن 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... 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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = 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); } } });