دستهبندی : برنامه نویسی
دستهبندی : برنامه نویسی
تقریبا یک ماهِ پیش بود که به صورت جدی تصمیم گرفتم از محدوده امن خودم خارج بشم. توی این مدت سعی کردم بیشتر بخونم و چیز های جدید رو امتحان کنم و توی حوزه کاریم فعال تر باشم.
همچنین یک سری چالش ها برای خودم مشخص کردم، یکی از اون سری چالش ها چالِشِ انجام پروژه های ساده و کوچیک هست. ساده هستن اما یک ویژگی دارن، اونم اینه که من نمیدونم چجوری باید انجامش بدم و این یعنی چالش.
من این پروژه رو برای خودم انجام دادم و کد های هر دو بخش سرور و کلاینت رو توی گیتهابم گذاشتم
اولین چالشی که انتخاب کردم ساخت یک برنامه پیام رسان ساده بود که این ویژگی ها رو داشته باشه:
اولین مرحله تحقیق کردن و پیدا کردن راه حله و منم این کارو انجام دادم
مهم ترین پارت این پروژه بخش سمت سرورشه. یه تحقیقی کردم و بعد از تحقیق کوتاهی که کردم متوجه شدم چند تا راه حل هست برای پیاده سازی سمت سرور پیام رسان ها به صورت real-time(شاید بیشتر باشه اما من فقط متوجه همینا شدم) :
من راه سوم رو انتخاب کردم. سوکت اصولی تر بود اما پیاده سازیش سخت تر بود و چون نمیخواستم پروژه طولانی بشه ترجیح دادم فعلا نرم سراغش.
Firebase Cloud Message چی هست اصلا ؟
Firebase Cloud Messaging یک API قدرتمند است که به شما اجازه می دهد پیام ها را به صورت قابل اعتماد و مستقل از پلتفرمی که در حال توسعه است، ارسال کنید. با استفاده از FCM، توسعه دهندگان می توانند به کاربران اطلاع دهند که داده های جدید برای همگام سازی و ارسال پیام های اطلاع رسانی در دسترس هستند. این برای آزمایش، ارسال پیام های بازاریابی و تعامل بسیار مفید است. منبع
خب ما با این منطق با FCM کار میکنیم : هر شخصی برای اولین بار وارد برنامه میشه فایربیس یک توکن منحصر به فرد براش میسازه، با اون توکن میشه به اون کاربر خاص دیتایی رو فرستاد. دیتا در واقع همون پیامیه که یک کاربر دیگه به این کاربر فرستاده. در زمان دریافت، دو حالت وجود داره :
توی حالت اول باید دیتا و محتویات پیام رو بخونیم و به صفحه چت اضافه کنیم
توی حالت دوم هم باید محتویات رو به صورت یک نوتیفیکیشن، به کاربر دریافت کننده نشون بدیم و اعلام کنیم که پیام جدیدی دریافت کردی.
خیلی نمیخوام وارد جزئیات بشم که طولانی بشه، به نظرم کلیات کار رو بگم بهتره
سمت اندروید هم برای من دو تا چالش داشت، یکیش پیاده سازی MVP توی یک پروژه واقعی و اون یکی نشون دادن لیست conversation دو کاربر(که فقط نگران زمان بر بودن پیاده سازیش بودم).
چند تا مطلب و مقاله راجب MVP خوندم و چند تا سمپل دیدم و دستم اومد چی به چیه. واسه لیست گفت و گو هم یک سرچی زدم و یک کتابخونه خیلی عالی پیدا کردم که باعث شد زمان زیادی رو بتونم سیو کنم
بخش اندروید
زود با MVP کنار امدم و بهش عادت کردم، هرچند به نظرم سرعت کدنویسی رو یکم پایین تر میاره ولی در عوض کد ها تمیز تر و دیباگ راحت تر میشه. بهجای RXjava از همون روش سنتی و broadcast استفاده کردم، اما به زودی به پروژه اضافش میکنم.
برنامه پنج تا اکتیویتی داره :
کد های اندروید هم میتونید توی گیتهاب ببینید : mymessages-android
بخش سمت سرور
همونجور که گفتم قرار شد بکاند رو با لیومن بزنم. لیومن در واقع همون لاراوله اما تمرکزش روی ساختن API هست و blade و اینارو نداره.
اولین تجربه ساخت API با لیومن تجربه شیرینی بود، کد ها تر و تمیز و مفهوم، بدون هیچ چیز اضافه ای بودن.
دیتابیس هم mysql هست، به ساختار جدول ها یک نگاهی بندازید بد نیست. ساختار خیلی ساده داره :
کد های این بخش رو میتونید توی گیتهاب ببینید : mymessages-lumen
بخش وب
هنوز نرفتم سمتش و توی روز های آینده حتما میرم سراغش و میسازمش
بکاند رو گذاشتم روی هاستم و برنامه رو وصل کردم بهش. چند روز تستش کردم و بدون مشکل کار میکنه.
خروجی برنامه رو هم همینجا میذارم که اگر خواستید تست یا استفاده کنید. دانلود خروجی اندروید
Categories: برنامه نویسی