من یک اپلیکیشن اندرویدی نیاز دارم که وظیفه آن، تشخیص و ثبت تمامی رویدادهای تماس گوشی (ورودی و خروجی) و ارسال اطلاعات مربوط به هر تماس به سرور ما به صورت JSON است.
اپ باید به صورت خودکار و در پسزمینه کار کند، بدون نیاز به باز بودن برنامه.
همچنین رابط کاربری اپلیکیشن باید دقیقاً مطابق فایلهای HTMLای باشد که من در اختیار شما قرار میدهم، و اپ از این فایلها از طریق WebView برای نمایش محیط تنظیمات و صفحات استفاده کند.
فرآیند کلی کار اپ
اولین اجرا:
اپ بعد از نصب وقتی باز میشود، از کاربر کد فعالسازی میگیرد.
کد فعالسازی توسط API سمت سرور ما تأیید میشود. پس از فعال شدن، اپ باید یک توکن یا شناسه فعالسازی ذخیره کند و بعد از آن دیگر نیازی به ورود مجدد کد نباشد.
گرفتن دسترسیها:
پس از فعالسازی، اپ باید تمام دسترسیهای موردنیاز را از کاربر بگیرد، شامل دسترسی تماس، وضعیت تلفن، تماس خروجی و… .
نمایش تنظیمات:
بعد از گرفتن دسترسیها، صفحه تنظیمات (با ظاهر HTML که من میدهم) نمایش داده میشود.
در این بخش کاربر میتواند تعیین کند کدام رویدادها فعال یا غیرفعال باشند.
انواع اکشنها (رویدادها)
اپ باید ۶ نوع اکشن تماس را تشخیص دهد:
برقراری تماس ورودی
زمانی که گوشی زنگ میخورد و هنوز مشخص نیست پاسخ داده شده یا نه.
برقراری تماس خروجی
زمانی که کاربر شمارهای را میگیرد و تماس در حال برقراری است.
تماس موفق ورودی
تماس ورودی که کاربر پاسخ داده است.
تماس موفق خروجی
تماس خروجی که مخاطب پاسخ داده است.
تماس ناموفق ورودی
تماس ورودی که پاسخ داده نشده، رد شده یا در دسترس نبوده.
تماس ناموفق خروجی
تماس خروجی که برقرار نشده یا طرف مقابل پاسخ نداده است.
جزئیات عملکرد
اپ باید همیشه در پسزمینه فعال باشد و بتواند بدون نیاز به باز بودن، رویدادهای تماس را شناسایی و ثبت کند.
هر زمان یکی از اکشنها اتفاق افتاد، باید یک فایل JSON مطابق نمونه زیر به سرور ما ارسال شود.
نمونه JSON:
{
“phonenumber“: “+989120000000“,
“action“: “incomingsuccess“,
“simslot“: 1,
“eventtime“: “2025-10-17T12:00:00Z“
}
در صورتی که گوشی دارای دو یا چند سیمکارت باشد، اپ باید تشخیص دهد تماس مربوط به کدام سیمکارت است و شماره سیم را در فیلد “sim_slot“ ارسال کند.
اگر دستگاه در زمان رویداد به اینترنت دسترسی نداشت، اپ باید اطلاعات را در حافظه محلی ذخیره کند و به محض اتصال به اینترنت، آن را به سرور ارسال کند.
تنظیمات کاربر
در بخش تنظیمات (که از روی فایل HTML من ساخته میشود):
کاربر میتواند هر کدام از اکشنها را فعال یا غیرفعال کند.
تنظیمات باید برای هر سیمکارت جداگانه قابل تنظیم باشد (مثلاً SIM1 و SIM2 تب جدا داشته باشند).
نحوه ارسال به سرور
ارسال از طریق درخواست POST به API که من مشخص میکنم (مثلاً /api/v1/events).
بدنه درخواست همان JSON بالا است.
درخواستها باید از طریق HTTPS انجام شود.
در صورت نیاز، توکن فعالسازی یا امضای امنیتی در هدر ارسال شود.
جزئیات فنی و نکات توسعه
زبان توسعه: Kotlin یا Java
حداقل نسخه اندروید پشتیبانیشده: Android 6 (API 23)
باید با آخرین نسخه اندروید (در زمان توسعه) کاملاً سازگار باشد.
اپ باید قابلیت اجرا روی گوشیهای دوسیمکارته و چندسیمکارته را داشته باشد.
پس از نصب، حتی اگر کاربر گوشی را ریستارت کند، سرویس اپ باید فعال بماند و بعد از بوت مجدداً اجرا شود.
از سرویسهای پسزمینه و WorkManager برای پایداری استفاده شود تا روی گوشیهایی مثل شیائومی یا سامسونگ که اپها را میبندند، عملکرد پایدار باقی بماند.
تمام ارسالها باید به صورت غیرهمزمان (Async) انجام شود و در صورت خطا مجدداً تلاش شود.
رابط کاربری فقط با HTML و WebView پیاده شود. ظاهر گرافیکی با من است و فایلها را در اختیار شما قرار میدهم.
امنیت و حریم خصوصی
فقط متادیتای تماس ارسال شود (شماره، نوع تماس، زمان و سیمکارت).
محتوای مکالمه یا صدای تماس ضبط نشود.
ارتباط با سرور فقط از طریق HTTPS انجام شود.
در صورت خروج از حساب یا حذف فعالسازی، تمام دادهها از حافظه محلی حذف شوند.
خروجی نهایی که باید تحویل داده شود
فایل APK نهایی جهت تست.
سورسکد کامل پروژه (Android Studio).
توضیحات کامل برای نحوه build، تغییر endpoint و فعالسازی.
تست کامل عملکرد اپ روی گوشیهای دوسیمکارته و نسخههای مختلف اندروید.
اطمینان از عملکرد اپ در پسزمینه و بعد از ریستارت گوشی.
نکات تکمیلی
اپ باید کممصرف و سبک باشد.
نوتیفیکیشن سرویس پسزمینه میتواند ساده و غیردخالتگر باشد.
در صورت امکان، وضعیت اجرای سرویس در صفحه تنظیمات نمایش داده شود.
تمام متنهای رابط کاربری و خطاها به زبان فارسی نمایش داده شود.
اولویت انتخاب مجری با شخصی هست که بتواند هم نسخه اندروید و هم IOS را همزمان با هم تحویل دهد