ارسال نوتیفیکیشن از طریق فایربیس با مثال

استاندارد

تو پست قبل درباره امکانات فایربیس کمی توضیح دادم ، حالا وقتشه با هم ببینیم چطور میتونیم از این قاببلیت‌های باحال توی پروژه‌هامون استفاده کنیم . در ادامه باهم خواهیم دید که چطور میتونیم به ساده‌ترین شکل ممکن از فایربیس برای ارسال نوتیفیکیشن به کاربرانمون استفاده کنیم .
بیاید اول با هم روند انجام کار رو برسی کنیم . اولین مرحله ثبت‌نام در فایربیس و ثبت پروژه‌مون داخل پنلش هست . در مرحله بعد یک پروژه خواهیم ساخت و با استفاده از کتابخونه‌های فایربیس کلاسی برای دریافت Token و همینطور کلاسی برای دریافت نوتیفیکیشن‌ها و نمایش اون‌ها خواهیم ساخت . این کلاس دو مدل نوتیفیکیشن رو نمایش خواهد داد . مدل اول مدل ساده که فقط شامل یک متن و یک توضیح هست و مدل دوم که شامل یک لینک هست .  درصورتی که اپلیکیشن در حال اجرا و در حالت foreground بود با کلیک بر روی نوتیفیکیشن لینکی که ما مد نظرمون بوده باز خواهد شد اما اگر برنامه بسته بود یا در background بود با کلیک روی نتیفیکیشن activity اصلی پروژه باز شده و لینک مورد نظر نمایش داده میشه . و بعد از انجام تمام این مراحل میریم سراغ پنل فایربیس و شروع میکنیم به ارسال نوتیفیکیشن .
متاستفانه در نسخه کنونی فایربیس ، در ارسال نوتیفیکیشن از طریق پنل این مشکل وجود داره که وقتی اپلیکیشن شما درحالت اجرا و foreground نیست شما امکان تغیر و شخصی سازی نوتیفیکیشن نمایش داده شده رو ندارید . در این حالت نوتیفیکیشن توسط کلاس‌های خود فایربیس ساخته خواهد شد و دیگر اطلاعات ارسال شده همراه نوتیفیکیشن از طریق activity ای که از طریق کلیک بر روی نوتیفیکیشن باز خواهد شد قابل دسترسی هست .

مرحله اول

ابتدا از طریق این آدرس وارد پنل فایربیس بشید . بعد از اون یک پروژه تست بسازید ، مطابق تصاویر زیر .

بعد از این مرحله و کلیک رو دکمه ADD APP ، فایلی با فرمت json به اسم google-services شروع به دانلود میشه . این فایل شامل اطلاعاتی از اپلیکیشنتون هست که کتابخونه فایربیس به اونها احتیاج داره . به خواندن ادامه دهید

معرفی و برسی امکانات فایربیس

استاندارد

یکی از جذاب‌ترین اتفاقات امسال رو میشه خریده شدن فایربیس توسط گوگل دونست . چیزی که باعث شد این سرویس خوب حالا اعتبار خوبی هم پیدا کنه . معرفی فایربیس در Google I/O امسال تاثیر خیلی زیادی در محبوبیت و شناخته شدن اون بین دولوپرها داشت .
فایربیس رو میشه شبیه به سرویس‌های قدیمی‌تری مثل Parse دونست اما با امکاناتی خیلی خیلی بیشتر . فایربیس امکان این رو به ما میده که بتونیم بدون صرف زمان و هزینه کارهایی که انجام اونها نیاز به server side داره رو بدون نیاز به server side انجام بدیم . همنطور خیلی از کارها رو که سرویس دهنده‌های مختلف در اختیار ما میگذاشتن رو به صورت یک پارچه دراورده .
در ادامه امکانات و سرویس‌های فایربیس رو بصورت مختصر و کوتاه برسی میکنیم .

فایربیس چه امکاناتی رو به ما میده ؟

  • امکان آنالیز اپلیکیشن و مشاهده گزارشات از طریق پنل  ( چیزی شبیه به گوگل آنالیتیک )
  • ارسال نوتیفیکیشن بدون نیاز به سرور و پنل برای مدیریت نوتیفیکیشن‌های ارسالی .
  •  ذخیره اطلاعات اپلیکیشن در دیتابیس (NoSql) ابری فایربیس به راحتی و دسترسی به اون‌ها حتی در شرایط offline .
  • استفاده از FireBase Strorage که امکان اپلود و دانلود فایل‌ها رو بصورت امن به شما میده . این سرویس از بک اند Google Cloud Storage برای این کار استفاده میکنند .
  • هاستیگ برای توسعه وب اپلیکیشن‌ و …
  • امکان تغییر در عملکرد و ظاهر اپلیکیشن بدون نیاز به بروزرسانی . در این روش فایربیس امکان ذخیره کردن فیلدهایی رو با عنوان default value در سمت سرور به شما میده که شما میتونید با این فیلدها نوع عملکرد و ظاهر اپلیکیشن رو برای کاربرانتون مشخص کنید ، همچنین فایربیس امکان تغییر این فیلدها از طریق پنل رو به شما میده .
  • Test Lab که به وسیله اون میشه اپلیکیشن رو با حجم زیادی از دستگاه‌های اندرویدی تست کرد (‌ امکان استفاده از این سرویس در نسخه مجانی وجود نداره ) .
  • جمع آوری خطاهای رخ داده و مشاهده اون‌ها ( Crash Reporting ) .این سرویس خطا‌ها رو به همراه جزییات اونها‌ در اختیار شما قرار میده و میتونید اون‌ها رو در پنل فایربیس مورد برسی قرار بدید ( این سرویس فعلا دو مرحله beta ست ).
  • امکان پیاده‌سازی ثبت نام و ورود از طریق سرویس‌های آماده فایربیس . این سرویس به شما امکان ورود و ثبت‌نام از طریق روش‌های مختلفی رو میده ، مثل ‌ایمیل و پسورد یا از طریق شبکه‌های اجتماعی همچون گوگل پلاس ، فیسبوک ، تویتتر و گیت‌هاب . با این سرویس شما میتونید کمترین نگرانی رو از بابت سرویس‌‌های سمت سرور و ذخیره‌سازی اطلاعات کاربر در سرور رو داشته باشید و بیشتر وقتتون رو بر روی پیاده سازی رابط کاربری و بخش‌های دیگه اپلیکیشنتون متمرکز کنید .
  • app indexing ، به وسیله این سرویس شما میتونید کاری کنید که اپلیکیشنتون در داخل جستجو‌های گوگل نمایش داده بشه .
  • Dynamic like ، با این قابلیت شما میتونید لینک‌هایی رو برای اپلیکیشنتون آماده کنید که در باز شدن  عملکردی مثل باز کردن یک صفحه خواست از اپلیکیشن رو انجام بدند و همچنین میتونید متوجه بشین که آیا صفحه مورد نظر از طریق dynamic link باز شده یا نه و اگر شده عملیاتی متناسب رو انجام بدید .‌(‌ مثلا وقتی کسی از طریق لینکی که در شبکه اجتماعی براشون قرار دادید به صفحه ثبت نام میره و ثبت نام رو انجام میده ، بهش اعتبار هدیه بدید ) . همینطور درصورتی که کاربر اپلیکیشن شما رو نصب نداشت ، امکان این هست که صفحه مربوط به گوگل پلی یا اپ استور اپلیکیشنتون باز بشه .
  • همینطور فایربیس امکاناتی برای راحت قرار دادن تبلیغات درون برنامه‌ای برای اپلیکیشن‌ها در اختیار شما قرار میده .

در توصیحات بالا سعی بر این بود که مختصر توضیحی راجع‌به تمام سرویس‌ها داده بشه .
در پست‌های آینده سعی میکنم هر کدوم از این سرویس‌ها بصورت جداگانه همراه با مثال برسی کنیم.

استفاده از ‌SVG در پروژه‌های اندرویدی

استاندارد

SVG زبانی برای توصیف گرافیک ۲ بعدی و برنامه های گرافیکی در xml است ، و یکی از پرکاربردترین و محبوب‌ترین فرمت‌های مورد استفاده در دنیای وب هست . SVG کوتاه شده ترکیب Scalable Vector Graphics هست ، و همونطور که از اسمش مشخصه SVG میتونه در اندازه‌های مختلف تصویر یا فایل گرافیکی بدون مشکل عمل کنه و کیفیت تصویرمون رو پایین نیاره ( به اصطلاح تصویر رو range نکنه ) .

خب حالا چطور میتونیم از SVG و مزایای خوبش تو پروژه‌های اندرویدی استفاده کنیم ؟ در ادامه این پست یک مثال از نحوه استفاده از ‌SVG رو با هم خواهیم دید .
کاری که قراره توی این مثال انجام بدیم ساخت صفحه‌ اسپلش ( همون صفحه اولی که وقتی بعضی اپلیکیشن‌ها رو باز میکنید باهاش روبرو میشید‌) اپلیکیشن توییتر هست . که در داخل اون قراره یک تصویر با فرمت SVG که همون لوگو توییتر هست رو نمایش بدیم . به خواندن ادامه دهید

تغییر versionName اپلیکیشن اندرویدی در هر Build

استاندارد

این پست راجع‌به تغییر versionName برنامه به صورت اتوماتیکه ، یعنی چی ؟ یعنی میخوایم با هربار گرفتن خروجی از پروژه اندرویدیمون اسم ورژن اپلیکیشنمون رو تغییر بدیم .

خب شاید براتون این سوال پیش اومده باشه که اصن چرا ما باید یه همچین کاری رو انجام بدیم ؟
این کار به شما کمک میکنه وقتی تغییری توی اپلیکیشن اعمال میکنید و اون رو برای تست در اختیار کاربرانتون قرار میدین ، بتونید نظرات اون‌ها رو با توجه به نسخه اپلیکیشن برسی کنید .
این کار بیشتر در روند توسعه و تست‌هایی که توسط بتا تستر‌ها قبل از انتشار اپلیکیشن انجام میشه کاربرد داره .

برای انجام این کار در اندروید استدیو کافیه که فایل build.gradle مربوط به ماژول اصلی پروژتون‌ ( ماژول app ) رو باز کنید و  versionName داخل defultConfig رو مثل زیر تغییر بدید . همینطور تابع getDate رو به فایل build.gradle تون اضافه کنید .

کد بالا در هربار گرفتن خروجی از پروژه ، مقدار versionName رو برابر با ترکیب کلمه Beta و زمان گرفتن شدن خروجی قرار میده .
حالا تنها کاری که باید انجام بدین نمایش versionName توی اپلیکیشنه تا کاربرتون بتونه اون رو ببینه . مثلا در صفحه‌ اسپلش یا درباره ما .

وقتی پسورد keystore اپلیکیشن رو فراموش کردیم !

استاندارد

یکی از بدترین اتفاقاتی که میتونه برای یک توسعه‌دهنده اندروید بیوفته ، فراموش کردن اطلاعات مربوط به sign اپلیکیشنه .
چرا ؟‌ چون بدون داشتن این اطلاعات باید فکر بروزرسانی کردن اپلیکیشنتون روی مارکت‌ها رو از سرتون بیرون کنید . منظور از بروزرسانی ، امکان نصب نسخه جدید به روی نسخه قدیمی بدون بوجود اومدن خطا در حین این کاره . یعنی کاربرتون به‌راحتی بدون نیاز به پاک کردن نسخه قدیمی نسخه جدید اپلیکیشنتون رو نصب کنه .
حالا چه اتفاقی میوفته اگه نسخه جدید اپلیکیشنمون رو با اطلاعاتی متفاوت از چیزی که نسخه‌‌های قبلی رو با اون sign کردیم sign کنیم ؟‌ تو این حالت اگه کاربرمون بخواد نسخه جدید رو نصب کنه به error زیر بر میخوره ( یا یه همچین چیزی ) .
photo_2016-06-21_11-07-06
در این حالت تنها کاری که کاربر میتونه برای نصب نسخه جدید انجام بده ، حذف نسخه قدیمی و بعد از اون نصب نسخه جدیده (که با این کار کاربرتون اطلاعات درون اپلیکشن رو از دست میده ).
خب حالا اگه این اتفاق بیوفته چیکار میتونیم بکنیم ؟
اول از همه اگه فایل keyStore تون رو گم کردین متاسفانه راهی براتون نمیمونه جز اینکه بیخیال بروزرسانی کردن نسخه قدیمی اپلیکیشنتون بدون حذف کردنش بشید .
ولی اگه فایل keyStore تون رو گم نکردید و فقط پسورد اون رو به خاطر نمیارید ، هنوز جای امیدواری هست .     به خواندن ادامه دهید