آموزش پیاده‌سازی Shared Element در اندروید

در اپلیکیشن‌های اندرویدی ، به صورت پیش‌فرض حرکت بین Activity یا Fragment هامون دارای انیمیشن ورود و خروج هستن . این انیمیشن‌ها شامل انیمیشن‌های پیشفرضی مثل fade in ، slide یا explode هست ، همینطور علاوه بر اینها ، شما میتونید از انیمیشن‌های دلخواه خودتون که ساختین استفاده کنید .
حالا گاهی پیش میاد که بین Activity یا Fragment هایی که قراره بین اونها حرکت کنیم کامپننت‌های گرافیکی مشابهی وجود داشته باشه . توی این حالت میتونیم با استفاده از Shared Element ، در حین حرکت بین دو activity (یا fragment) این کامپننت‌ها رو نگه داریم و فقط اونها رو از موقعیتی که در activiy (یا fragment) اول حضور دارن به موقعیت جدیدشون در activity (یا fragment) دوم منتقل کنیم . مثل زیر .

sharedelementgif

نکته : Shared Element فقط در اندروید ۵ ( api ۲۱) و بالاتر از اون پشتیبانی میشه .

حالا میریم سراق سناریو مثالی که ما میخوایم اون رو پیاده‌سازی کنیم .  فرض کنید دوتا activity داریم ، activiy اول شامل یک لوگو با اندازه بزرگ در وسط صفحه‌ ، که نقش صفحه اسپلش رو برای ما بازی میکنه و activity دوم صفحه ثبت‌نام اپلیکیشن هست که باز هم شامل همون لوگو هست اما در اندازه کوچک‌تر . ما قراره با باز کردن اپلیکیشن با دیدن actitiy اسپلش ، بعد از ۲ ثانیه وارد activity ثبت‌نام بشیم . در حرکت بین این دو صفحه قراره لوگوی ما ( ImageView) از وسط صفحه‌ اسپلش با استفاده از Shared Element به جای جدیدش در activity ثبت‌نام منتقل بشه . دقیقا مثل روندی که کمی بالاتر در تصویر دیدیم . ادامه‌ی خواندن

معرفی فیلم کوتاه : زندگی و مرگ یک ایفون

 

امروزه همه (اکثر) ما‌ در حال تجربه زندگی کاملا گره خورده به تلفن‌های هوشمند هستیم . صبحمون رو با زنگ گوشیمون شروع میکنیم ، خبرها رو از طریق تلفن‌هامون دنبال میکنیم ، با دوستامون از طریق تلفن معاشرت میکنیم ، در فعالیت‌های اجتماعی شرکت میکنیم ، سلفی‌ میگیریم ، فیلم میبینم و خلاصه ساعت‌های خیلی خلیی زیادی رو صرف خیره شدن به صفحه گوشیمون میکنم ، خیلی بیشتر از اونکه حتی فکرش رو میکنیم . حالا فرض کنید گوشی هوشمندمون هم میتونست مارو ببینه (‌ البته سناریو دور از ذهنی نیست ، چون بلاخره دوربین جلو رو اکثر گوشی‌های امروزی هست ) .
Paul Trillo کارگدان این فیلم ، دنیا رو از دید تلفن‌هامون به تصویر کشیده ، فیلم از لحظه تولد یک iphone  در کارخانه تولید کننده‌اش در چین شروع میشه و پس از اون تمام اتفاق‌هایی که در طول مدت استفاده شدن با اون‌ها روبرو میشه رو از زاویه دید iphone به ما نشون میده .
این فیلم به شکل بسیار جالبی به هم تنیدگی زندگی امروز ما با تلفن‌های هوشمند رو به ما نشون میده .

اگه کنجکاوید که دنیا از زاویه دید تلفنتون چه شکلیه ، توصیه میکنم این فیلم ۷ دقیقه‌ای رو حتما ببینید .

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 باز شده یا نه و اگر شده عملیاتی متناسب رو انجام بدید .‌(‌ مثلا وقتی کسی از طریق لینکی که در شبکه اجتماعی براشون قرار دادید به صفحه ثبت نام میره و ثبت نام رو انجام میده ، بهش اعتبار هدیه بدید ) . همینطور درصورتی که کاربر اپلیکیشن شما رو نصب نداشت ، امکان این هست که صفحه مربوط به گوگل پلی یا اپ استور اپلیکیشنتون باز بشه .
  • همینطور فایربیس امکاناتی برای راحت قرار دادن تبلیغات درون برنامه‌ای برای اپلیکیشن‌ها در اختیار شما قرار میده .

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