تکنیک‌های ساده خواندن SMS برای توسعه‌دهندگان اندروید

با استفاده از زبان کاتلین، روش‌های مختلفی را برای خواندن پیام‌های متنی و کدهای تایید یکبار مصرف وجود دارد که در این پست به API SMS Retriever، Content Resolver و Broadcast Receiver پرداخته می‌شود.

همانطور که می دانید تجربه کاربری روان در زمینه احراز هویت اهمیت بسیاری دارد. یکی از روش‌های رایج، استفاده از رمزهای یکبار مصرف (OTP) ارسال‌شده از طریق SMS است.

در این پست، به بررسی چندین روش برای خواندن SMS در اندروید با استفاده از کاتلین می‌پردازیم و نحوه پیاده‌سازی هر یک از آن‌ها را به صورت مرحله‌به‌مرحله نشان می‌دهیم.


چرا خواندن SMS برای تأیید OTP اهمیت دارد؟
خواندن پیام‌های SMS به شما این امکان را می‌دهد که فرآیند ورود را با بازیابی خودکار OTP ارسال‌شده به کاربران ساده‌تر کنید. این کار تجربه کاربری را بهبود می‌بخشد، زیرا خطاهای ناشی از وارد کردن دستی را کاهش داده و احراز هویت را سرعت می‌بخشد.


روش اول: استفاده از SMS Retriever API
SMS Retriever API ابزاری قدرتمند از گوگل است که به شما اجازه می‌دهد پیام‌های SMS را بدون نیاز به مجوزهای SMS دریافت کنید.

مرحله 1: تنظیم پروژه
ابتدا مطمئن شوید که وابستگی‌های لازم را در فایل build.gradle خود اضافه کرده‌اید:

مرحله 2: شروع SMS Retriever
در اکتیویتی خود، SMS Retriever را مقداردهی اولیه کنید:

مرحله 3: ساخت یک BroadcastReceiver
یک BroadcastReceiver ایجاد کنید تا پیام‌های ورودی SMS را مدیریت کند. این Receiver کد OTP را برای شما استخراج می‌کند.

مرحله 4: ثبت BroadcastReceiver
در اکتیویتی خود، BroadcastReceiver را برای گوش دادن به SMS ثبت کنید:

مرحله 5: ارسال یک SMS با فرمت صحیح
مطمئن شوید که SMS ارسالی شما به درستی فرمت‌بندی شده باشد، مانند این:


روش دوم: استفاده از Content Resolver
اگر به کنترل بیشتری نیاز دارید و می‌خواهید پیام‌های SMS را به‌طور مستقیم بخوانید، می‌توانید از ContentResolver استفاده کنید. این روش به مجوز READ_SMS نیاز دارد.

مرحله 1: اعلام مجوزها
مجوز زیر را به فایل AndroidManifest.xml خود اضافه کنید:

مرحله 2: درخواست مجوز
در اکتیویتی خود، مجوز را بررسی کرده و درخواست کنید:

مرحله 3: خواندن SMS
حالا می‌توانید پیام‌های SMS را با استفاده از ContentResolver بخوانید:

مرحله 4: مدیریت نتیجه مجوز
مطمئن شوید که نتیجه مجوز را مدیریت کنید:


روش سوم: استفاده از BroadcastReceiver برای خواندن SMSهای ورودی
این روش یک راه ساده برای خواندن پیام‌های SMS با مجوزهای لازم فراهم می‌کند و به شما کنترل بر روی پیام‌های ورودی در حین دریافت آن‌ها می‌دهد.

مرحله 1: اعلام مجوزها
مجوز زیر را به فایل AndroidManifest.xml خود اضافه کنید:

مرحله 2: ایجاد یک BroadcastReceiver
یک BroadcastReceiver ایجاد کنید که به پیام‌های SMS ورودی گوش دهد:

مرحله 3: ثبت Receiver در Manifest
BroadcastReceiver خود را در فایل AndroidManifest.xml ثبت کنید:

مرحله 4: مدیریت مجوزها
مطمئن شوید که مجوزها را مدیریت می‌کنید، به‌ویژه در دستگاه‌های دارای Android 6.0 (API سطح 23) و بالاتر:

حال با این سه روش شما می توانید پیامک های OTP را مدیرت کنید.

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

مورد استفاده:‏

  • روش ‏‏SMS Retriever API: بهترین گزینه برای تأیید OTP و پیام‌های موقت.
  • روش‏BroadcastReceiver: مناسب برای اپلیکیشن‌هایی که نیاز به دسترسی فوری به پیام‌های ورودی دارند.
  • روش Content Resolver: مناسب برای اپلیکیشن‌هایی که به دسترسی گسترده‌تر به پیام‌های SMS نیاز دارند (مثلاً برنامه‌های پیام‌رسان).

مجوزهای مورد نیاز:

  • روش ‏SMS Retriever API: نیازی به مجوز برای خواندن SMS ندارد.
  • ‏روش BroadcastReceiver: به مجوزهای RECEIVE_SMS و READ_SMS نیاز دارد.
  • ‏روش Content Resolver: به مجوز READ_SMS نیاز دارد.

حریم خصوصی:

  • روش SMS Retriever API: حریم خصوصی کاربر را افزایش می‌دهد و به همه پیام‌های SMS دسترسی ندارد.
  • روش BroadcastReceiver: حریم خصوصی کمتری دارد؛ تمامی پیام‌های SMS ورودی را رهگیری می‌کند.
  • روش Content Resolver: حریم خصوصی کمتری دارد؛ به تمامی پیام‌های SMS دسترسی دارد.

پیچیدگی پیاده‌سازی:

  • روش ‏SMS Retriever API: ساده‌تر برای بازیابی OTP.
  • روش ‏BroadcastReceiver: پیچیدگی متوسط؛ نیاز به مدیریت مجوزها و پیام‌های دریافتی دارد.
  • ‏روش Content Resolver: پیچیده‌تر؛ نیاز به مدیریت مجوزها و SMS دارد.

تجربه کاربری:

  • روش ‏SMS Retriever API: بدون وقفه و درخواست مجوز برای کاربر.
  • ‏روش BroadcastReceiver: ممکن است تجربه کاربری را با درخواست مجوز قطع کند.
  • روش ‏Content Resolver: ممکن است تجربه کاربری را با درخواست مجوز قطع کند.

فیلتر پیام‌ها:

  • روش SMS Retriever API: به‌طور خودکار پیام‌ها را بر اساس معیارهای از پیش تعیین‌شده فیلتر می‌کند.
  • روش ‏BroadcastReceiver: نیاز به پردازش دستی پیام‌های رهگیری‌شده دارد.
  • روش ‏Content Resolver: نیاز به فیلتر و پردازش دستی پیام‌ها دارد.

بازیابی هم‌زمان:

  • روش SMS Retriever API: ‏SMS را فقط زمانی بازیابی می‌کند که با فرمت مشخصی برای API ارسال شده باشد.
  • روش BroadcastReceiver: پیام‌های SMS را به محض ورود رهگیری می‌کند.
  • روش Content Resolver: می‌تواند در هر زمان پیام‌های SMS را از صندوق ورودی بخواند.

فرمت پیام SMS:

  • روش ‏SMS Retriever API: نیاز به فرمت خاصی دارد (مثلاً با هش).
  • روش ‏BroadcastReceiver: نیازی به فرمت خاصی ندارد؛ تمامی پیام‌های ورودی را رهگیری می‌کند.
  • ‏روش Content Resolver: نیازی به فرمت خاصی ندارد؛ می‌تواند هر پیام SMS را بخواند.

خلاصه:

  • روش ‏SMS Retriever API برای بازیابی OTP و احراز هویت گزینه‌ای ایده‌آل است و رویکردی ساده و دوستدار حریم خصوصی ارائه می‌دهد.
  • ‏روش BroadcastReceiver پیام‌های SMS ورودی را به‌صورت هم‌زمان دریافت می‌کند، اما نیاز به مجوز دارد و تمامی پیام‌ها را پردازش می‌کند که ممکن است همیشه برای حفظ حریم خصوصی کاربر مناسب نباشد.
  • روش ‏Content Resolver دسترسی گسترده‌تری به SMS فراهم می‌کند، اما نیاز به تنظیمات بیشتر و مجوزهای کاربر دارد و مناسب اپلیکیشن‌هایی است که به مدیریت جامع SMS نیاز دارند.

نتیجه گیری:

هر روش مزایا و معایب خاص خود را دارد، بنابراین بهترین انتخاب بسته به نیازهای خاص اپلیکیشن شما و تجربه کاربری مطلوب شما متفاوت است!


ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:

بقیه آموزش های من با نام (mister developer) را می توانید در تلگرام و اینستاگرام دنبال کنید!!

کانال تلگرام: mister_developerr

اینستاگرام: mister_developerr

موفق و پیروز باشید