به نام خدا. در این مقاله قصد داریم قدم به قدم مراحل پیاده سازی FCM Push Notification در اندروید رو خدمتتون آموزش بدیم. اما اگر به دنبال یه آموزش ویدیویی حرفه ای و صفر تا صدی برای پیاده سازی و ارسال نوتیفیکیشن با FCM Push Notification در اندروید هستید ما به شما آموزش پوش نوتیفیکیشن اندروید آرنا رو پیشنهاد میکنیم که در آن هر آنچه که برای ارسال پوش نوتیفیکیشن نیاز است یاد بگیرید آموزش داده شده مثل ارسال نوتیفیکیشن از سمت سرور با استفاده از زبان php، ذخیره FCM Token های کاربران در دیتابیس برای ارسال های تکی و گروهی نوتیفیکیشن و کلی موارد دیگه…
پوش نوتیفیکیشن یک سرویس اطلاعات رسانی هست که به آن اعلان گفته میشود که میتوان این اعلان را برای پلتفرم های مختلف مثل موبایل ها، ساعت های هوشمند، سیستم های دسکتاپ و غیره ارسال کرد. و امروزه در بسیاری از برنامه ها شاهد استفاده از این سرویس هستیم. پوش نوتیفیکیشن ها همانند سرویس های ایمیل (Email) و پیامک (SMS) ابزاری برای اطلاع رسانی هستند اما این سه تفاوت هایی نیز دارند که در ادامه آنها را بررسی میکنیم.
پوش نوتیفیکیشن ها امکانات مختلفی را در اختیار مدیران و توسعه دهندگان برنامه قرار میدهد که این سرویس را از سایر سرویس های اطلاع رسانی متمایز میکند مثل امکان نمایش عکس و قرار دادن دکمه در نوار مربوط به اعلان.
۱- برای ارسال پوش نوتیفیکیشن شما هزینه کمتری نسبت به ارسال پیامک پرداخت میکنید و گاهی وقت ها ممکن است استفاده از این سرویس برای شما رایگان باشد. که ما قصد داریم یکی از این سرویس های رایگان یعنی (FCM Push Notification) که یکی از سرویس های قدرتمند گوگل هست را در این مقاله به شما آموزش دهیم.
۲- احتمال باز شدن اعلان ها نسبت به پیامک ها و ایمیل ها بیشتر میباشد. به دلیل دریافت ایمیل ها و پیامک های تبلیغاتی آزار دهنده معمولا کاربران توجه زیادی به این دو سرویس ندارند و بیشتر وقت ها این اعلان ها رو چک نمیکنند. اما اعلان های پوش نوتیفیکیشن چون معمولا حاوی خبر های مهمی هستند مثل اطلاع رسانی تخفیف ها، رویداد های ورزشی، اخبار مهم روز و غیره، و همچنین قابلیت شخصی سازی اعلان های پوش نوتیفیکیشن باعث محبوبیت بیشتری نسبت به سایر سرویس های اطلاع رسانی شده است.
۳- تفکیک کاربران برای ارسال اعلان های تکی و گروهی در سرویس پوش نوتیفیکیشن به راحتی قابل انجام است. به عنوان مثال شما یک برنامه فروشگاهی دارید که محصولات زیادی در آن قرار داده اید و قصد دارید برای کسانی که به محصولات ورزشی علاقه مند هستند یک اعلان برای تخفیفات محصولات ورزشی خود ارسال نمایید و نیازی به ارسال این اعلان به تمامی کاربران نیست. در این مواقع شما میتوانید با زیر نظر گرفتن فعالیت های کاربران خود در برنامه تشخیص دهید که چه کسانی به محصولات ورزشی علاقه مند هستند و فقط برای آن ها این اعلان را ارسال نمایید.
۴- امکان شخصی سازی نوار اعلان های پوش نوتیفیکیشن قابلیتی است که امکان باز کردن و دیده شدن این اعلان را نسبت به پیامک و ایمیل بیشتر میکند. شما میتوانید در نوار اعلان خود در کنار متن عکس، دکمه و کامپوننت های مختلفی نمایش دهید.
خب نوبتی هم که باشه نوبت پیاده سازی FCM Push Notification در اندروید هست. بریم باهم قدم به قدم اون رو پیاده سازی کنیم…
مرحله اول: ابتدا پروژه خودمون رو با اسم AndroidArenaFcmNotifications در اندروید استودیو میسازیم.
نکته: ما در این پروژه از این نام برای پروژه خودمون استفاده میکنیم، الزامی در این نام نیست و شما میتونید با هر نامی پروژه خودتون رو بسازید ولی باید در ادامه با توجه به نام پروژه خودتون مراحل را انجام بدید.
مرحله دوم: وارد پنل کنسول firebase گوگل میشیم تا پروژه خودمون رو در اونجا پیاده سازی کنیم.
نکته: این سایت تحریم هست و شما میتونید برای گذر از تحریم و استفاده از این سایت از قندشکن یا DNS شکن که آموزش اون رو در دوره رایگان جاوا مقدماتی قرار دادیم استفاده کنید
بعد از این که وارد این صفحه شدید ابتدا باید از قسمت بالا سمت راست با یک حساب Gmail وارد شوید تا اجازه استفاده از سرویس های این پنل رو داشته باشید.
بعد از اینکه به حساب جیمیل وارد شدید گزینه Create a Project رو بزنید تا وارد صفحه زیر بشید.
مرحله سوم: مطابق صفحه بالا و قسمت های با فلش قرمز نشان شده، نام پروژه خودتون رو وارد میکنید و تیک تایید قوانین فایربیس رو میزنید و در انتها دکمه Continue رو بزنید تا وارد صفحه زیر بشید.
مرحله چهارم: مطابق تصویر بالا تیک آبی مربوط به (Enable Google Analytics) رو فعال نگه دارید و دکمه Continue رو بزنید تا وارد صفحه زیر بشید.
نکته: در تصویر بالا ۵ قسمت مشخص شده که بخش اول درصورتی برای شما نمایان میشود که از قبل پروژه ای با این حساب فعلی ساخته باشید. اگر بار اول قصد ساخت پروژه را داشته باشید بخش اول تصویر بالا برای شما نمایان نمیشود.
مرحله پنجم: در تصویر بالا ۵ قسمت با فلش مشخص شده که در اولین قسمت یعنی بخشی که جلوی آن نوشته شده (Create New Account) رو بزنید و بعد از باز شدن پنجره مربوطه گزینه Create New Account رو بزنید و نام پروژه خودتون رو دوباره در این قسمت وارد کنید و تایید رو بزنید تا حساب Google Analytics شما ساخته بشه.
در ادامه ۴ مورد بعدی مشخص شده رو طبق تصویر بالا قرار بدید و در انتهای صفحه بر روی دکمه Continue کلیک کنید و منتظر بمونید تا پروژه شما ساخته بشه.
مرحله ششم: پس از اینکه پروژه با موفقیت ساخته شد بر روی دکمه Continue کلیک کنید تا وارد صفحه زیر بشید.
مرحله هفتم: در این مرحله قصد داریم پروژه اندرویدی خودمون رو که از قبل ایجاد کردیم به پروژه firebase خودمون در این پنل اضافه کنیم. در ادامه طبق تصویر بالا بر روی icon اندروید کلیک کنید تا وارد صفحه زیر بشید.
مرحله هشتم: همانند تصویر بالا package name پروژه اندرویدی خودتون رو از فایل manifest.xml بردارید و در قسمت مشخص شده قرار بدید و بر روی دکمه Register app کلیک کنید.
مرحله نهم: در این بخش باید فایل google-services.json رو که با فلش مشخص شده دانلود کنید و این فایل رو همانند کادر با قرمز مشخص شده در مسیر project -> app قرار بدید و بر روی دکمه Next کلیلک کنید.
مرحله دهم: وارد فایل build.gradle که با کادر قرمر در تصویر بالا مشخص شده وارد بشید و همانند دستورات زیر فایل خودتون رو تکمیل کنید.
نکته مهم اینه که فقط خط هایی که در فایل خودتون ندارید رو باید بردارید و قرار بدید و کل فایل رو با دستورات زیر عوض نکنید.
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' classpath 'com.google.gms:google-services:4.2.0' } } allprojects { repositories { maven{ url "https://maven.google.com"} maven {url "https://jitpack.io"} google() jcenter() mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir }
نکته: در دستورات بالا هر دو خطی که در قسمت dependencies نوشته شده با توجه به ورژن گردل و اندروید استودیو شما باید استفاده بشه. یعنی اگر در اندروید استودیو شما اجازه استفاده از این نسخه گردل (com.android.tools.build:gradle:3.5.3) وجود داشته باشد میتوانید با ورژن ۴.۲.۰ از کتابخانه gsm استفاده کنید.
پس باید با توجه به ورژن گردل خودتون سرویس gsm رو ورژن گذاری کنید.
مرحله یازدهم: مطابق تصویر بالا فایل build.gradle که با کادر قرمز مشخص شده رو باز کنید و دستورات زیر رو وارد کنید.
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services'
در اول فایل گردل مورد نظر باید این دو خط رو قرار بدید که به طور پیشفرض خط اول موجود هست و باید خط دوم رو زیر خط اول قرار بدید و بعد از این باید در قسمت dependencies در انتهای صفحه کتابخانه های زیر را در کنار کتابخانه های موجود قرار بدید.
dependencies { implementation 'com.google.firebase:firebase-messaging:20.2.4' implementation 'com.google.firebase:firebase-core:17.5.0' }
حالا نوبت build مجدد پروژه هست تا کتابخانه های وارد شده دانلود بشن و بتونیم از اونها استفاده کنیم. برای این کار در صفحه build.gradle فعلی در بالای صفحه سمت راست گزینه Sync now رو بزنید تا کتابخانه ها دانلود و پروژه بیلد شود. دقت کنید که حتما باید از vpn یا dns برای دانلود کتابخانه ها استفاده کنید.
مرحله دوازدهم: در این مرحله نوبت میرسه به اجرای پروژه بر روی یک دستگاه اندرویدی که حتما بر روی اون گوگل پلی سرویس موجوده.
پس از اینکه پروژه با موفقیت build شد در پنل کنسول خود دکمه Next رو کلیلک کنید تا وارد صفحه بالا بشید.
در این مرحله گوگل از شما میخواد که یکبار پروژه مورد نظر رو بر روی دستگاه اندرویدی خودتون اجرا بگیرید تا گوگل اون رو شناسایی کنه و بتونید به دستگاه اندرویدی خودتون نوتیفیکیشن ارسال کنید.
نکته مهم اینه که قبل از اجرای پروژه بر روی گوشی یا شبیه ساز خودتون باید مجوز استفاده از اینترنت رو در پروژه خودتون گرفته باشید از کاربر. همانند تصویر زیر میتونید بخش های مشخص شده رو در فایل manifest پروژتون اضافه کنید.
بعد از اینکه مجوز اینترنت رو اضافه کردید و پروژه رو اجرا گرفتید باید منتظر بمونید که گوگل دستگاه شما رو شناسایی کنه و این روند شناسایی ممکنه تا ۵ دقیقه طول بکشه بعد از اجرای پروژه. اما اگر از پیاده سازی درست تا اینجای کار اطمینان دارید میتونید گزینه Skip this step رو بزنید تا از اجرای برنامه روی دستگاه اندرویدیتون صرف نظر کنید.
بعد از اینکه گوگل دستگاه شما رو شناسایی کرد دکمه تایید رو بزنید تا وارد پنل کنسول گوگل بشید.
مرحله سیزدهم: حالا نوبت میرسه به نوشتن کد های مربوط به کلاس fcm در پروژه اندرویدی خودمون تا بتونیم نوتیفیکیشن های ارسالی رو دریافت کنیم و نمایش بدیم. ابتدا یک کلاس java با نام MyFirebaseMessagingService در پروژه ایجاد کنید و همانند کد های زیر اون رو تکمیل کنید.
public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void Received(@NonNull RemoteMessage rm) { super.Received(rm); if (rm.getNotification()!=null){ String title=rm.getNotification().getTitle(); String body=rm.getNotification().getBody(); Log.e("FCM Notification Title",title); Log.e("FCM Notification Body",body); } } }
در ادامه باید این کلاس رو که حالا توسعه یافته از یک سرویس، در manifest تعریف کنیم تا به درستی کار کنه. دستورات زیر رو در تگ application در manifest قرار بدید.
<service android:name="MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
خب تا اینجای کار ما دستورات مورد نیاز برای دریافت نوتیفیکیشن های ارسالی رو نوشتیم و حالا نوبت میرسه به ارسال نوتیفیکیشن از پنل کنسول فایربیس.
حالا میریم سراغ پنل خودمون و همانند تصویر زیر که دو بخش در اون مشخص شده، یکی از اون دو بخش رو کلیک میکنیم تا بریم در بخشی که بتونیم در اونجا نوتیفیکیشن ارسال کنیم.
مرحله چهاردهم: در صفحه باز شده بر روی Send your first message کلیک کنید تا وارد صفحه زیر بشید.
همانند تصویر بالا و بخش های با کادر قرمز مشخص شده، عنوان و متن نوتیفیکیشن خودتون رو وارد کنید و بر روی دکمه Next کلیک کنید. تا وارد صفحه زیر بشید.
در ادامه در قسمتی که با کادر قرمز مشخص شده کلیک کنید و package name پروژه ای که در این پنل تعریف کردید رو انتخاب کنید . در نهایت برای ارسال نوتیفیکیشن بر روی دکمه Review کلیک کنید و Publish رو بزنید تا نوتیفیکیشن شما ارسال بشه.
توضیح پایانی: تا اینجای کار ما آموزش دادیم که چطور پروژه خودتون رو در پنل firebase ثبت کنید و با استفاده از Firebase Cloud Messaging نوتیفیکیشن رو به دستگاه های اندرویدی خودتون ارسال کنید. و در پروژه اندرویدی نحوه دریافت نوتیفیکیشن رو یاد گرفتیم اما کدی برای نمایش اون نوتیفیکیشن دریافتی ننوشتیم و تنها به صورت Log در قسمت Logcat قابل نمایش است.
شما میتونید برای نمایش نوتیفیکیشن به صورت صحیح و حتی ارسال نوتیفیکیشن از سمت سرور آموزش حرفه ای و صفر تا صدی FCM Push Notification اندروید آرنا رو تهیه کنید.