authentication_fireBase

امکان ورود و ثبت‌نام در اپلیکیشن بدون نیاز به سرور ، با فایربیس

یکی دیگه از امکانات خیلی خوب و مفید پلتفرم فایربیس امکان انجام احراز هویت و ورود و ثبت‌نامه . این قابلیت به شما این امکان رو میده که بدون داشتن دغدغه پیاده‌سازی وب سرویس ، عملیات ورود و ثبت‌نام  رو برای اپلیکیشنتون پیاده‌سازی کنید . با کمک اینکار شما فقط کافیه تمرکز خودتون رو معطوف به پیاده‌سازی کلاینت کنید .
اما از معایب این سرویس هم باید گفت ، بزرگترین مشکل این سرویس برای ما ایرانی‌ها ست (مثل همیشه !!!) و اون مشکل اجازه ندادن ‌فایربیس برای استفاده از این سرویس در داخل ایرانه . یعنی اگه شما اپلیکیشنتون رو برای کاربران داخل ایران توسعه بدید و اگه کاربرانتون با ip های داخلی بخوان از سرویس‌های احراز هویت شما که توسط فایربیس پیاده شده استفاده کنند به مشکل بر میخورند . ولی خب اگه میخواید اپلیکیشنی با کاربر‌های هدف غیر ایرانی داشته باشید این مشکل بی معنی خواهد بود.
در ادامه روند پست قبل رو دنبال میکنیم و برای آشنایی با این سرویس یک مثال از اون رو با هم پیاده میکنیم . کاری که میخوایم در ادامه انجام بدیم ساخت یک اپلیکیشن با فرم‌های ورود ، ثبت‌نام و فراموشی رمزعبورر هست ، و برای انجام این عملیات‌ قصد داریم از سرویس‌هایی که فایربیس در اختیارمون میذاره استفاده کنیم .
فایربیس در سرویس احراز هویتش به ما علاوه بر امکان ثبت‌نام و ورود از طریق ‌ایمیل و پسورد ، امکان استفاده از حساب‌ کاربری شبکه‌های اجتماعی رو هم میده . حساب‌‌های کاربریی مثل فیسبوک ، توییتر ، گیت‌‌هاب ، گوگل .در صورت موفقیت آمیز بودن ورود ، شما به اطلاعات پایه کاربرتون دسترسی خواهید داشت .
عملکرد فایربیس به این صورته که در ابتدا شما اطلاعات مربوط به ورود یا ثبت‌نام رو از کاربر میگیرید و اون‌ها رو به Firebase Authentication SDK میفرسیتد و منتظر میمونید تا بعد از برسی و احراز هویت توسط فایربیس ، داخل اپلیکیشن پاسخ این برسی رو دریافت کنید .
در این مثال ما قصد داریم امکان ثبت‌نام و ورود از طریق ‌ایمیل و پسورد رو برای کاربرمون قرار بدیم .

مرحله اول

ابتدا باید از طریق این آدرس وارد پنل فایربیس بشید و یک پروژه بسازید . چگونگی انجام این کار رو در مرحله اول این پست میتونید بخونید .

مرحله دوم

وارد پنل فایربیس بشید و به صفحه مربوط به Auth برید و مطابق تصاویر زیر عمل کنید .
auth firebase tut1
Screen Shot 2016-08-11 at 3.54.54 PM
Screen Shot 2016-08-11 at 4.05.00 PMحالا میتونیم بریم سراغ پیاده‌سازی اپلیکیشنمون . ادامه‌ی خواندن

notifications

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

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

مرحله اول

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

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

firebase

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

یکی از جذاب‌ترین اتفاقات امسال رو میشه خریده شدن فایربیس توسط گوگل دونست . چیزی که باعث شد این سرویس خوب حالا اعتبار خوبی هم پیدا کنه . معرفی فایربیس در 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-logo

استفاده از ‌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 توی اپلیکیشنه تا کاربرتون بتونه اون رو ببینه . مثلا در صفحه‌ اسپلش یا درباره ما .