رفتن به محتوا

توسعه اپلیکیشن موبایل

اپلیکیشن‌های موبایل نصب‌شدنی و آفلاین‌محور (PWA و اندروید) برای کسانی که پشت میز کار نمی‌کنند

توسعه اپلیکیشن موبایل

اپلیکیشن‌های موبایلی که می‌سازیم برای آدم‌هایی است که سرپا کار می‌کنند: بازرس در کارگاه ساختمانی، جوشکار پای ایستگاه ساخت، تعمیرکار پشت پیشخوان. این جاها آنتن ضعیف است یا اصلاً نیست، دست‌ها در دستکش است و کسی حوصلهٔ چرخیدن علامت بارگذاری را ندارد. برای همین آفلاین‌محور می‌سازیم. اپ نسخهٔ خودش را از داده‌های لازم نگه می‌دارد و هر وقت توانست با سرور همگام می‌شود، به جای اینکه هر قطع اتصال را خطا حساب کند.

صادقانه بگوییم: پیش‌فرض ما Progressive Web App با React است، نه دو کدبیس جدا با Swift و Kotlin. یک کدبیس روی اندروید، آیفون و دسکتاپ نصب می‌شود و برای اندروید، اگر بخواهید در Google Play باشد، آن را به‌صورت اپ آمادهٔ فروشگاه بسته‌بندی می‌کنیم. برای بیشتر اپ‌های سازمانی این انتخاب بهتری است. اگر اپ شما به قابلیت‌های عمیق بومی نیاز دارد، همان اول می‌گوییم.

این خدمت برای چه کسانی است

تیم‌هایی که کارشان بیرون از دفتر انجام می‌شود و داده‌شان نمی‌تواند منتظر Wi-Fi بماند: بازرسی میدانی، کنترل کیفیت، ردیابی سالن تولید، تعمیر و نگهداری، پیشخوان فروش، ویزیت فروش. همین‌طور سازمان‌هایی که از قبل سامانهٔ وب دارند و نسخه‌ای مناسب گوشی می‌خواهند که در زیرزمین یا سالن فولاد هم کار کند.

روند کار

  1. دیدن محل استفاده. از یک روز کاری معمولی شروع می‌کنیم: چه دستگاهی، چه اتصالی، کاربر بعد از چند لمس کلافه می‌شود. این بیشتر از هر فهرست قابلیتی طراحی را تغییر می‌دهد.
  2. تعیین بخش‌های آفلاین. لازم نیست همه‌چیز آفلاین باشد. تعیین می‌کنیم کدام داده روی دستگاه بماند، کدام عملیات در صف منتظر بماند و وقتی دو نفر یک رکورد را ویرایش کنند تعارض چطور حل شود.
  3. ساخت روی پشتهٔ واقعی. کش service worker برای پوستهٔ اپ، ذخیره‌سازی محلی (IndexedDB یا SQLite داخل مرورگر) برای داده و یک لایهٔ همگام‌سازی با API.
  4. تست روی گوشی واقعی. با حالت پرواز، روی گوشی‌های ارزان اندرویدی و گوشی‌های نو، و در هر دو چیدمان راست‌به‌چپ و چپ‌به‌راست تست می‌کنیم.
  5. اجرای آزمایشی و استقرار. اول یک گروه کوچک با آن کار واقعی انجام می‌دهد. بعد منتشر می‌کنیم: نصب از مرورگر، بستهٔ اندروید، یا هر دو.

پشته‌ای که واقعاً استفاده می‌کنیم

فرانت‌اند React و TypeScript روی Next.js یا Vite است. برای کش آفلاین از service worker با Serwist یا vite-plugin-pwa استفاده می‌کنیم. وقتی اپ باید آفلاین داده بنویسد و بعد همگام کند، از PowerSync استفاده می‌کنیم که یک پایگاه دادهٔ SQLite محلی روی دستگاه را با PostgreSQL سرور همگام نگه می‌دارد. بک‌اند FastAPI است. برای اندروید از بسته‌بندی Trusted Web Activity استفاده می‌کنیم که یک APK یا AAB امضاشده می‌دهد و PWA را تمام‌صفحه و بدون نوار مرورگر باز می‌کند.

نمونه‌کارهایی که می‌توانید ببینید

Probe361 استانداردهای بازرسی و جوشکاری (AWS، API، ASME همراه با ترجمهٔ فارسی) را در گوشی بازرس می‌گذارد. صفحه‌ها را برای استفادهٔ آفلاین کش می‌کند، علاقه‌مندی‌ها را به‌صورت محلی در IndexedDB نگه می‌دارد، اعلان می‌فرستد و از همان کدبیس به‌صورت اپ اندروید منتشر شده است. ایستگاه‌های سالن تولید در Fidar MES روی PowerSync کار می‌کنند؛ اپراتورها با قطع شبکه هم پیشرفت کار را ثبت می‌کنند و با وصل شدن دوباره همه‌چیز همگام می‌شود. Mobile Master، سامانهٔ تعمیرگاه موبایل ما، روی تبلت پیشخوان نصب می‌شود، در صندوق فروش ورود صوتی دارد و مشتری با لینک پیگیری عمومی وضعیت تعمیر را روی گوشی خودش می‌بیند.

مطالعهٔ بیشتر

پرسش‌های متداول

اپ بومی iOS و اندروید می‌سازید؟

پیش‌فرض ما PWA با یک کدبیس React است که اگر بخواهید برای Google Play هم بسته‌بندی می‌شود. کدبیس جداگانهٔ Swift و Kotlin نگه نمی‌داریم. اگر اپ شما به قابلیت‌هایی وابسته است که PWA به‌خوبی به آن‌ها نمی‌رسد، در همان جلسهٔ اول می‌گوییم، نه اینکه نیمه‌کاره بسازیم.

اپ واقعاً بدون اینترنت کار می‌کند؟

بله، برای بخش‌هایی که این‌طور طراحی می‌کنیم. پوستهٔ اپ کش می‌شود، داده‌ای که کاربر لازم دارد روی دستگاه ذخیره می‌شود و تغییرات در صف یا پایگاه دادهٔ محلی منتظر برگشت اتصال می‌مانند. ایستگاه‌های سالن تولید فیدار و استانداردهای ذخیره‌شده در Probe361 همین‌طور کار می‌کنند.

اگر دو نفر یک رکورد را آفلاین ویرایش کنند چه می‌شود؟

این را قبل از ساخت، برای هر نوع داده تعیین می‌کنیم. بعضی رکوردها آخرین نوشتن را می‌پذیرند، بعضی هر دو نسخه را برای بازبینی نگه می‌دارند و بعضی عملیات در حالت آفلاین مسدود است چون تعارض در آن‌ها گران تمام می‌شود. این بخشی از طراحی است، نه چیزی که در محیط عملیاتی کشف شود.

امکان انتشار در Google Play هست؟

بله. PWA را به‌صورت اپ اندروید امضاشده (Trusted Web Activity) بسته‌بندی می‌کنیم؛ Probe361 هم همین‌طور روی اندروید منتشر شده. در آیفون، کاربر از Safari با گزینهٔ «Add to Home Screen» آن را نصب می‌کند.

می‌شود برای سامانهٔ وب فعلی ما اپ موبایل ساخت؟

معمولاً بله. اگر سامانهٔ شما API دارد، نسخهٔ موبایل را روی همان می‌سازیم. اگر ندارد، اول یک لایهٔ API کوچک اضافه می‌کنیم.

هزینه‌اش چقدر است؟

بیشتر به این بستگی دارد که چه مقدار از کار باید آفلاین باشد و قواعد همگام‌سازی چقدر پیچیده است، برای همین بعد از جلسهٔ تعریف دامنه برآورد می‌دهیم. فهرست قیمت ثابت نداریم.

ویژگی‌های این سرویس

📶

کار بدون آنتن

داده روی دستگاه ذخیره می‌شود و با برگشتن اتصال همگام می‌شود.

📲

نصب‌شدنی، فروشگاه اختیاری

نصب از مرورگر، یا انتشار در اندروید به‌صورت APK/AAB آمادهٔ فروشگاه.

🔁

یک کدبیس

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

🔔

اعلان و پیامک

اعلان داخل اپ و پیامک یا واتس‌اپ برای مشتری‌ها.

به این خدمت علاقه‌مند هستید؟

فرم زیر را پر کنید و ما ظرف ۲۴ ساعت با شما تماس می‌گیریم.

تماس با ما

آماده تحول کسب‌وکار خود هستید؟

بیایید درباره اینکه چگونه می‌توانیم به شما کمک کنیم تا به اهداف دیجیتال خود برسید صحبت کنیم.