Phone Number Hint API، کتابخانهای که توسط سرویسهای Google Play پشتیبانی میشود، روشی بدون اصطکاک برای نمایش شمارههای تلفن کاربر (مبتنی بر سیمکارت) بهعنوان یک راهنمایی ارائه میکند.
مزایای استفاده از شماره تلفن شامل موارد زیر است:
- هیچ درخواست مجوز اضافی مورد نیاز نیست
- کاربر را از تایپ دستی شماره تلفن بی نیاز می کند
- هیچ حساب Google مورد نیاز نیست
- مستقیماً به گردشهای کاری ثبت نام/آپ نمیشود
- پشتیبانی گسترده تر از نسخه های اندروید در مقایسه با تکمیل خودکار
قبل از شروع
برای آماده سازی اپلیکیشن خود، مراحل زیر را انجام دهید.
برنامه خود را پیکربندی کنید
وابستگی خدمات Google Play را برای Phone Number Hint API به فایل ساخت Gradle ماژول خود اضافه کنید، که معمولا app/build.gradle
است:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.2.0'
}
چگونه کار می کند
Phone Number Hint API از PendingIntent
برای شروع جریان استفاده می کند. هنگامی که PendingIntent راه اندازی شد، یک رابط کاربری به کاربر ارائه می شود که همه شماره های تلفن (مبتنی بر سیم کارت) را فهرست می کند. سپس کاربر می تواند شماره تلفنی را که می خواهد استفاده کند انتخاب کند یا جریان را لغو کند. سپس شماره تلفن انتخاب شده برای بازیابی از Intent
در اختیار برنامهنویس قرار میگیرد.
یک شی GetPhoneNumbeHintIntentRequest ایجاد کنید
با ایجاد یک شی GetPhoneNumberHintIntentRequest
با استفاده از متد GetPhoneNumberHintIntentRequest.Builder()
شروع کنید. سپس می توان از این شی درخواست برای دریافت Intent
برای شروع جریان شماره تلفن استفاده کرد.
کاتلین
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
جاوا
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
راهنمایی درخواست شماره تلفن
SignInClient.getPhoneNumberHintIntent()
را فراخوانی کنید، که در شیء GetPhoneNumberHintIntentRequest
قبلی ارسال می شود، تا PendingIntent
برای شروع جریان 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") }
جاوا
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
منتقل کنید.
کاتلین
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") } }
جاوا
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); } } });