PDA

View Full Version : نحوه پیاده سازی SmsRetriever بدون دریافت پرمیشن از کاربر



samiasoft
شنبه 09 آذر 1398, 23:14 عصر
سلام وقت بخیر

میخواستم کدفعالسازی دریافت شده از پیامک رو بخونم برای همین خواستم از SmsRetriever خود گوگل پلی سرویس استفاده کنم.

در این صفحات درمورد پیاده سازیش توضیح داده شده اما کمی برایم گنگ هست!
https://developers.google.com/identity/sms-retriever/user-consent/request

چندسوال دراین باره داشتم :

گفته شده پیامک دریافتی باید بدین صورت باشه :

<#> You OTP is: 123456 h4h4h54h5h

که درواقع درکنار کدفعالسازی که به کاربر میفرستیم یک کد هش هم باید ارسال کنیم.

- سوال اول این هستش که ایا در کلیه نسخه های اندروید تست کردید مشکلی نداره؟ حداقل اندروید 4.2.2 به بالا ساپرت کنه که عالیه.

- سوال دوم اینکه ایا حتما باید پیامک دریافتی به اون ارایش باشه ؟ نمیشه تغییر داد؟ مثلا نیاز ارسال کد هش نباشه.

- سوال سوم اینکه در کلاس BroadcastReceiver که خود گوگل ارائه داده تایم اوت رو نوشته 5 دقیقه...چگونه این تایم اوت رو کمتر یا بیشتر کنیم ؟

public class SmsBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "SmsBroadcastReceiver";
OtpReceivedInterface otpReceiveInterface = null;


public void setOnOtpListeners(verificationCode_Activity otpReceiveInterface) {
this.otpReceiveInterface = otpReceiveInterface;
}


@Override public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: ");
if (SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.g etAction())) {
Bundle extras = intent.getExtras();
Status mStatus = (Status) extras.get(SmsRetriever.EXTRA_STATUS);


switch (mStatus.getStatusCode()) {
case CommonStatusCodes.SUCCESS:
// Get SMS message contents'


String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
Log.d(TAG, "onReceive: failure "+message);
if (otpReceiveInterface != null) {
String otp = message.replace("<#> Your otp code is : ", "");
otpReceiveInterface.onOtpReceived(otp);
}
break;
case CommonStatusCodes.TIMEOUT:
// Waiting for SMS timed out (5 minutes)
Log.d(TAG, "onReceive: failure");
if (otpReceiveInterface != null) {
otpReceiveInterface.onOtpTimeout();
}
break;
}
}
}
}
ممنون میشوم اگرکسی اینو پیاده کرده دراین باره راهنمایی کنه.