استفاده از Cloud Messaging در Firebase
در سری آموزش های Firebase, میخواهیم مبحث Cloud messaging را مورد بررسی قرار دهیم.
Firebase Cloud Messaging و یا به اختصار FCM به معنای ارسال پیام به صورت cross platform میباشد و ارسال کننده مشمول پرداخت هزینه در قبال ارسال پیام نمیگردد. با استفاده از این ابزار شما میتوانید به client های خود بابت موضوعی خاص اطلاع رسانی کنید. playload پیام شما حداکثر KB 4 میتواند باشد. برای درک بهتری از FCM آنرا در قالب یک پروژه پیاده سازی میکنیم.
پروژه ای که در ابتدا سری آموزش Firebase ایجاد کردهایم را ادامه میدهیم. بهتر است برای درک بهتر آموزش اول را مطالعه کنید. برای مشاهده آموزش اول به اینجا مراجعه کنید.
ابتدا به gradle dependency مربوط به FCM را اضافه میکنیم
compile 'com.google.firebase:firebase-messaging:10.0.1'
یک کلاس که از کلاس Firebase Instance ID Service ارث بری میکند را ایجاد میکنیم. این کلاس برای ارسال پیام به device خاص و یا ایجاد دسته ای ازdevice ها میباشد.
public class ZHCloudMessaging extends FirebaseInstanceIdService
به AndroidManifest.xml علاوه بر سرویس notification یک سرویس دیگر نیز اضافه میکنیم.
<service android:name=".ZHCloudMessaging"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service>
وقتی که برنامه روی device کاربر نصب میگردد, FCM SDK اقدام به ساخت یک token مختص به device میکند. در واقع کلاسی که از Firebase Instance ID Service ارث بری میکند ایجاد و مدیریت token ساخته شده را برعهده دارد. یک token ساخته شده ممکن است به چنین دلایلی refresh شود
- برنامه Instance ID را حذف کند
- برنامه بر روی یک device جدید نصب شده است
- برنامه حذف گردیده و مجددا نصب شده است
- کاربر data مربوط به برنامه را حذف کرده است
در نتیجه با استفاده از چنین متدی در کلاس مربوط میتوانید تغییرات token را بررسی کنید
@Override public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); System.out.println("token : " + token); }
تا به اینجا ما سرویس cloud messaging را بر روی برنامه نصب کرده ایم. برای تست این مراحل یک بار برنامه را اجرا میکنیم و token مورد نظر را دریافت میکنیم. سپس به notification panel در Firebase میرویم و از قسمت target گزینه single device را انتخاب میکنیم و token مورد نظر را وارد میکنیم.
FCM از دو روش برای ارسال پیام استفاده میکند
- topic : ارسال پیام به Device هایی که دارای یک Topic واحد میباشند
- Device group : ارسال پیام به مجموعه ای از Device ها که در یک گروه مشخص قرار دارند.
برای افزودنDevice به Topic خاص میتوانید از دستور زیر استفاده کنید
FirebaseMessaging.getInstance().subscribeToTopic("topic");
در واقع میتوان آنرا به یک topic موجود اختصاص داد. در صورتی که Topic که به آن اختصاص میدهیم موجود نباشد یک Topic جدید ایجاد میکند.
برای لغو topic مربوط به device میتوانید از این دستور استفاده کنید
FirebaseMessaging.getInstance().unsubscribeFromTopic("topic");
شیوه دریافت آن نیز بر همان روشی که در Notification ها توضیح داده شد, میباشد. در ارسال پیام به صورت topic باید چند نکته را مد نظر داشته باشید
- ارسال پیام به وسیله topic ها برای اطلاعات عمومی بسیار بهتر است. برای مثال اطلاعاتی مانند آب و هوا, اخبار و موضوعاتی از این قبیل
- در صورتی که میخواهید به یک Device پیامی ارسال کنید بهتر است برای تضمین امنیت و بالا نگهداشتن سرعت ارسال از token مربوط به آن استفاده کنید و سعی کنید از اختصاص topic های متفاوت به هر device برای اینکه روشی جایگزین token شود, خودداری کنید.
در این مقاله سعی بر این بود تا آشنایی مختصری نسبت به FCM برای شما ایجاد شود. در مقاله بعدی با استفاده از یک FCM Server موارد ذکر شده بالا را به صورت عملی پیاده سازی میکنیم.
سری مقالات آموزش Firebase همچنان ادامه دارد.
با ما همراه باشید.
مطالب زیر را حتما مطالعه کنید
آموزش Gradle – اهمیت Project Automation
درک مفهوم کدنویسی تمیز در اندروید
5 هک ساده برای کاهش سایز فایل APK
آشنایی با RecyclerView در اندروید
Open/Closed Principle در قوانین Solid
توابع در زبان برنامه نویسی Kotlin
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
خیلی متشکر
عالی بود.
سلام. ممنون از همراهیتون دوست عزیز