
بسیاری از افرادی که تازه وارد دنیای ساخت اپلیکیشن اندروید شدهاند، دوست دارند یک برنامه پیامرسان شخصی بسازند اما فکر میکنند این کار حتماً به دانستن زبان برنامهنویسی جاوا نیاز دارد. اسکچور (Sketchware) دقیقاً همین مانع را از سر راه برمیدارد. با این ابزار میتوانید با کشیدن و رهاسازی قطعههای آماده (بلوکها)، یک برنامه چت واقعی بسازید که پیامها را بین دو گوشی رد و بدل کند، بدون اینکه خط به خط کد بنویسید.
۱. آشنایی اولیه با اسکچور و آمادهسازی
اسکچور یک محیط توسعه اندروید است که بهجای نوشتن کد، از قطعات بصری استفاده میکند. هر قطعه معادل یک دستور برنامهنویسی است و شما با چیدن آنها کنار هم، منطق برنامه را میسازید. برای شروع، به گوشی یا تبلت اندرویدی با حداقل چهار گیگابایت رم و اتصال اینترنت پایدار نیاز دارید. نسخه اسکچور را از منبع رسمی یا فروشگاههای معتبر اندرویدی دانلود و نصب کنید. پیش از شروع پروژه، بهتر است حدود نیم ساعت با محیط برنامه بازی کنید تا با محل قرارگیری قطعهها و بخش طراحی صفحه آشنا شوید.
۲. ساخت پروژه جدید و تنظیمات اولیه
بعد از باز کردن اسکچور، گزینه ساخت پروژه جدید را انتخاب کنید. در این مرحله باید نام برنامه، نام بسته (Package Name) و آیکون اولیه را مشخص کنید. نام بسته را طوری بنویسید که یکتا باشد، معمولاً به شکل com.نامشما.messenger. این نام بعداً برای اتصال به سرویسهای ابری اهمیت دارد و تغییر آن در میانه کار دردسرساز است. بعد از تایید این تنظیمات، وارد محیط اصلی پروژه میشوید که شامل بخش طراحی ظاهر، بخش منطق برنامه و بخش مدیریت فایلهاست.
۳. طراحی صفحات اصلی برنامه
یک پیامرسان ساده حداقل به سه صفحه نیاز دارد: صفحه ورود کاربر، صفحه فهرست مخاطبان یا گفتگوها، و صفحه چت. برای صفحه ورود، یک کادر متنی برای نام کاربری و یک دکمه ورود کافی است. صفحه فهرست گفتگوها را با یک لیست نمایشی (ListView) بسازید تا بعداً نام کاربران فعال در آن نشان داده شود. صفحه چت شامل یک نوار نمایش پیامها، یک کادر متنی برای تایپ پیام جدید، و دکمه ارسال است. هر عنصر را با کشیدن از جعبهابزار به روی صفحه اضافه کنید و نام مشخصی به آن بدهید، چون در مرحله بعد با همین نامها به آنها دستور میدهید.

۴. اتصال به سرویس ذخیرهسازی ابری
پیامرسان بدون یک سرور ذخیرهسازی نمیتواند کار کند، چون باید پیامهای دو کاربر در جایی مشترک نگهداری شوند. برای این کار از سرویس فایربیس (Firebase) که رایگان و مخصوص چنین کارهایی است استفاده میشود. یک پروژه جدید در پنل فایربیس بسازید، دیتابیس بلادرنگ (Realtime Database) آن را فعال کنید و کلید اتصال را دریافت کنید. سپس در اسکچور از بخش افزودن قابلیت (Add Component/Library)، فایربیس را به پروژه اضافه کرده و همان کلید را وارد کنید. این مرحله پل ارتباطی بین برنامه شما و سروری است که پیامها را نگه میدارد.
۵. نوشتن منطق ارسال پیام
حالا وارد بخش منطق برنامه (Blocks) میشوید. روی دکمه ارسال کلیک کرده و در قسمت رویداد کلیک، دستور میدهید که متن داخل کادر پیام خوانده شود، به همراه نام کاربر فرستنده و زمان ارسال در دیتابیس فایربیس ذخیره شود. بعد از ذخیره، کادر متنی باید خالی شود تا کاربر بتواند پیام بعدی را بنویسد. این بخش قلب اصلی برنامه پیامرسان است، چون هر بار که این دستور اجرا شود، یک پیام جدید به مکالمه اضافه میشود.
۶. دریافت و نمایش پیامهای ورودی
برای اینکه پیامها بهصورت زنده نمایش داده شوند، باید یک شنونده (Listener) روی دیتابیس تعریف کنید. این شنونده هر بار که داده جدیدی در مسیر مربوط به مکالمه اضافه شود، بهطور خودکار فعال میشود و پیام جدید را به لیست نمایشی اضافه میکند. در اسکچور این کار با بلوک مخصوص گوشدادن به تغییرات دیتابیس انجام میشود. توصیه میکنم مسیر ذخیره پیامها را بر اساس شناسه دو کاربر بسازید (مثلاً ترکیب نام هر دو نفر)، تا هر مکالمه در مسیر جداگانه خودش ذخیره شود و پیامهای افراد مختلف با هم قاطی نشوند.
۷. افزودن سیستم ورود و شناسایی کاربر
بدون سیستم شناسایی، هر بار برنامه باز شود کاربر باید دوباره نام خود را وارد کند و مکالمههای قبلی گم میشود. برای رفع این مشکل، از حافظه محلی برنامه (Local Storage) در اسکچور استفاده کنید تا نام کاربر بعد از اولین ورود ذخیره شود. اگر میخواهید سیستم حرفهایتری بسازید، میتوانید بخش احراز هویت فایربیس (Authentication) را هم فعال کنید تا ورود با ایمیل یا شماره تلفن انجام شود. برای شروع کار و یادگیری مفاهیم پایه، همان حافظه محلی کاملاً کافی است.
۸. آزمایش، رفع اشکال و خروجی گرفتن
بعد از تکمیل منطق برنامه، از گزینه اجرا (Run) استفاده کنید تا برنامه روی گوشی نصب و تست شود. حتماً برنامه را روی دو گوشی یا دو حساب کاربری متفاوت امتحان کنید تا مطمئن شوید پیام از یک طرف ارسال و در طرف دیگر نمایش داده میشود. اگر همهچیز درست کار کرد، از منوی خروجی گرفتن (Build APK)، فایل نصبی نهایی را بسازید. این فایل را میتوانید مستقیم روی گوشیهای دیگر نصب کنید یا برای انتشار در فروشگاههای اپلیکیشن آماده کنید.
ویدیو آموزشی (ساخت پیام رسان با اسکوچر):
امنیت پیامها، نکتهای که اغلب فراموش میشود
خیلی از افرادی که اولین پیامرسان خود را میسازند، پیامها را دقیقاً به همان شکلی که کاربر تایپ کرده در دیتابیس ذخیره میکنند. این روش برای تمرین و یادگیری مشکلی ندارد، اما اگر قصد دارید برنامه را واقعاً بین دوستان یا افراد دیگر توزیع کنید، باید حداقل یک لایه محافظتی ساده اضافه کنید. سادهترین راه، تنظیم قوانین دسترسی دیتابیس فایربیس است، طوری که فقط کاربر واردشده بتواند پیامهای مربوط به خودش را بخواند و بنویسد، نه هر کسی که آدرس دیتابیس را داشته باشد.
علاوه بر این، بهتر است هیچوقت رمز عبور یا اطلاعات حساس کاربر را مستقیم و بدون تغییر در دیتابیس ذخیره نکنید. حتی یک جابجایی ساده حروف یا افزودن یک کد ثابت به ابتدای رمز عبور، جلوی خیلی از سوءاستفادههای ابتدایی را میگیرد. این نکته را از همان پروژه اول رعایت کنید تا به عادت درست تبدیل شود.
نمایش اعلان وقتی برنامه بسته است
یکی از تفاوتهای اصلی یک پیامرسان واقعی با یک برنامه تمرینی ساده، این است که وقتی برنامه بسته یا در پسزمینه است، کاربر همچنان از پیام جدید باخبر شود. این کار با سرویس پیامرسانی ابری فایربیس (Firebase Cloud Messaging) انجام میشود که مستقل از باز بودن برنامه، یک اعلان کوتاه روی گوشی نمایش میدهد.
برای پیادهسازی این قابلیت در اسکچور، باید بعد از ذخیره هر پیام جدید، یک درخواست اعلان به سرویس فایربیس ارسال شود که شامل نام فرستنده و متن کوتاه پیام است. این بخش کمی پیچیدهتر از منطق اصلی ارسال پیام است و بهتر است بعد از تسلط کامل بر مراحل پایه سراغش بروید، اما نبودش باعث میشود کاربران فکر کنند برنامه پیامها را از دست میدهد.
مدیریت پیامهای زیاد و جلوگیری از کند شدن برنامه
وقتی تعداد پیامهای یک مکالمه از چند صد مورد بگذرد، اگر همه آنها یکجا از دیتابیس خوانده و در لیست نمایش داده شوند، برنامه ممکن است کند شود یا حتی برای لحظهای هنگ کند. راهحل ساده این است که بهجای خواندن کل مکالمه، فقط آخرین سی تا پنجاه پیام را در لحظه ورود به صفحه چت بارگذاری کنید و پیامهای قدیمیتر را فقط زمانی که کاربر به بالای لیست اسکرول میکند، بهتدریج اضافه کنید.
این تکنیک در برنامهنویسی به «بارگذاری تدریجی» معروف است و رعایت آن از همان ابتدای پروژه، جلوی مشکلاتی را میگیرد که معمولاً چند هفته بعد از انتشار برنامه و با افزایش حجم پیامها خودش را نشان میدهد.
افزودن قابلیت ارسال عکس در کنار متن
یک پیامرسان مدرن معمولاً فقط به ارسال متن محدود نمیماند. برای افزودن قابلیت ارسال عکس، عکس انتخابی کاربر باید ابتدا در بخش ذخیرهسازی فایل فایربیس (Firebase Storage) آپلود شود، سپس فقط آدرس همان فایل، نه خود فایل، در پیام دیتابیس ذخیره گردد. به این ترتیب سرعت ارسال پیامهای متنی تحت تاثیر حجم عکس قرار نمیگیرد.
در سمت نمایش، وقتی برنامه پیام جدید را میخواند، باید تشخیص دهد که پیام از نوع متن است یا عکس، و بر اساس آن یا کادر متن را نمایش دهد یا تصویر را از روی آدرس ذخیرهشده بارگذاری کند. این قابلیت را میتوان بعد از تکمیل و تست کامل نسخه متنی برنامه اضافه کرد، نه همزمان با ساخت نسخه اول.
آمادهسازی برنامه برای انتشار عمومی
قبل از اینکه فایل نصبی نهایی را برای دیگران بفرستید یا در فروشگاههای اپلیکیشن مثل کافهبازار منتشر کنید، چند نکته را باید بررسی کنید. اول، آیکون برنامه باید در چند اندازه مختلف طراحی و در پروژه جایگزین شود، چون آیکون پیشفرض اسکچور برای انتشار مناسب نیست. دوم، نام بسته (Package Name) که در ابتدای پروژه تعیین کردید باید یکتا و غیرتکراری باشد، وگرنه فروشگاهها برنامه را نمیپذیرند.
سوم، پیش از انتشار، حتماً مجوزهای درخواستی برنامه (مثل دسترسی به اینترنت یا حافظه) را بررسی کنید و فقط مجوزهایی را نگه دارید که واقعاً استفاده میشوند، چون مجوزهای غیرضروری باعث بیاعتمادی کاربر میشود. در نهایت، برنامه را حداقل روی دو مدل گوشی متفاوت تست کنید تا از سازگاری ظاهر و عملکرد آن مطمئن شوید.
خطای رایج و راه جلوگیری
رایجترین خطایی که تازهکارها با آن روبرو میشوند، ننوشتن درست مسیر دیتابیس در فایربیس است. اگر مسیر ذخیره و مسیر خواندن پیام یکسان نباشد، پیام ارسال میشود اما در صفحه دیگر نمایش داده نمیشود. برای جلوگیری از این مشکل، همیشه قبل از نوشتن منطق برنامه، مسیر دقیق را روی کاغذ یادداشت کنید و در هر دو بخش ارسال و دریافت دقیقاً همان مسیر را استفاده کنید. خطای دیگر، فراموش کردن اتصال اینترنت هنگام تست برنامه است؛ بدون اینترنت فعال، هیچ پیامی رد و بدل نمیشود و کاربر تازهکار فکر میکند برنامهاش خراب است در حالی که مشکل فقط قطعی اتصال بوده.







