1. مقدمه
اهداف
در این لبه کد یاد خواهید گرفت که چگونه اپلیکیشن چند پلتفرمی خود را ابزارسازی کنید تا بتوانید با استفاده از موضوعات FCM، پیامهای فشار چندگانه را به زیرگروههای مختلف نمونههای برنامهتان ارسال کنید.
پس از اتمام، میتوانید از زیرساخت FCM برای مدیریت این زیر گروهها و همچنین پیامهای فشار چندپخشی روی زیرگروهها استفاده کنید.
بررسی اجمالی موضوعات
موضوعات یک روش پشتیبانی شده از زیرساخت FCM برای دسترسی به زیرگروه های نمونه های برنامه شما با پیام هستند.
FCM APIها را برای ارسال پیام و همچنین حفظ اشتراک در این موضوعات فراهم می کند. عمل مرتبط کردن و جدا کردن یک نمونه برنامه به موضوع به ترتیب اشتراک و لغو اشتراک نامیده می شود.
موضوعات باید برای محتوای در دسترس عموم استفاده شوند. به عنوان مثال، پیام هایی در مورد به روز رسانی آب و هوا. اگر میخواهید پیامهای حساس به کاربر ارسال کنید، از Firebase Admin SDK برای ارسال پیامهای چندگانه در چندین دستگاه استفاده کنید.
چندپخشی مبتنی بر موضوعات برای توان عملیاتی بهینه شده است.
چیزی که یاد خواهید گرفت
- نحوه اشتراک (و لغو اشتراک) کاربران در موضوعات یک برنامه تلفن همراه.
- نحوه ارسال پیامهای فشار چندپخشی با استفاده از موضوعات.
- نحوه ارسال پیام به ترکیبی از موضوعات با استفاده از شرایط موضوع.
- نحوه مدیریت اشتراک موضوع در سمت سرور و انجام اشتراک و لغو اشتراک انبوه.
چیزی که خواهی ساخت
- یک برنامه Android که مشترک/لغو اشتراک موضوعات است و هنگام ارسال به موضوعات پیامها را دریافت میکند.
- یک ادغام سمت سرور با استفاده از Firebase Admin SDK، که برای ارسال پیامهای موضوعی از طریق APIهای FCM استفاده میشود.
آنچه شما نیاز دارید
- مرورگر دلخواه شما، مانند کروم.
- IntelliJ IDEA IDE برای توسعه برنامه های کاربردی جاوا.
- هنگام نصب، حتماً از Gradle پشتیبانی کنید.
- Android Studio IDE برای توسعه برنامه های اندروید.
- دستگاهی برای اجرای برنامه اندروید. هر یک از:
- شبیه ساز اندروید (نیاز به راه اندازی در Android Studio دارد).
- یک دستگاه اندروید فیزیکی به رایانه شما متصل شده و روی حالت توسعه دهنده تنظیم شده است.
- یک حساب Google برای ایجاد و مدیریت پروژه Firebase شما.
2. راه اندازی
کد را دریافت کنید
مخزن GitHub را از خط فرمان کلون کنید:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
کد نمونه در دایرکتوری fcm-codelab
کلون می شود.
cd fcm-codelab
برنامه شروع این کد لبه در دایرکتوری messaging
شاخه fcm-topics-codelab
قرار دارد. برای رسیدن به کد شروع مراحل زیر را انجام دهید. این شامل دو دایرکتوری StockNewsApp
و StockNewsServer
است. اولی شامل برنامه Android استارتر و دومی کد سمت سرور استارت است.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
نسخه تکمیل شده این کد لبه در پوشه messaging/fcm-topics-codelab/completed
قرار داده شده است.
یک پروژه Firebase ایجاد کنید
- در کنسول Firebase ، روی Add project کلیک کنید، نام پروژه Firebase را StockNews بگذارید و روی ادامه کلیک کنید. توجه: شناسه پروژه برای پروژه Firebase خود را به خاطر بسپارید (یا روی نماد ویرایش کلیک کنید تا شناسه پروژه دلخواه خود را تنظیم کنید).
- می توانید از فعال کردن Google Analytics صرف نظر کنید. برای اهداف این نرم افزار کد، شما به آن نیاز ندارید. روی Continue کلیک کنید.
- روی ایجاد پروژه کلیک کنید.
تبریک می گویم! شما به تازگی پروژه Firebase خود را ایجاد کرده اید. اکنون می توانید روی نام پروژه کلیک کنید تا وارد کنسول شوید.
3. پیکربندی برنامه Firebase مخصوص پلتفرم
اکثر تغییرات کد مورد نیاز برای فعال کردن پشتیبانی Firebase قبلاً در پروژه ای که روی آن کار می کنید بررسی شده است. با این حال، برای افزودن پشتیبانی از پلتفرم های تلفن همراه، باید:
- پلتفرم مورد نظر را در پروژه Firebase ثبت کنید
- فایل پیکربندی مخصوص پلتفرم را دانلود کرده و به کد اضافه کنید.
برای اهداف این نرم افزار کد، ما قصد داریم یک برنامه Android Firebase را اضافه کنیم.
اندروید را پیکربندی کنید
- در کنسول Firebase ، تنظیمات پروژه را در بالای نوار پیمایش سمت چپ در دکمه تنظیمات انتخاب کنید و روی نماد Android در زیر برنامههای شما در صفحه عمومی کلیک کنید.
شما باید دیالوگ زیر را ببینید:
- ارزش مهمی که باید ارائه شود نام بسته Android است. آن را روی
com.ticker.stocknews
تنظیم کنید.- نام بسته ارائه شده در اینجا باید با نام ارائه شده در
AndroidManifest.xml
کد شروع کننده StockNewsApp شما باشد. اگر می خواهید آن را پیدا کنید یا تغییر دهید، این مراحل را دنبال کنید:- در پوشه StockNewsApp ، فایل
app/src/main/AndroidManifest.xml
را باز کنید. - در عنصر
manifest
، مقدار رشته ویژگیpackage
را پیدا کنید. این مقدار نام بسته اندروید است.
- در پوشه StockNewsApp ، فایل
- نام بسته ارائه شده در اینجا باید با نام ارائه شده در
- در محاوره Firebase، نام بسته کپی شده را در قسمت نام بسته Android قرار دهید.
- شما به گواهی امضای Debug SHA-1 برای این کد لبه نیازی ندارید، زیرا این برنامه منتشر نخواهد شد. این را خالی بگذارید.
- روی ثبت برنامه کلیک کنید.
- برای ادامه در کنسول Firebase، دستورالعملها را برای دانلود فایل پیکربندی
google-services.json
دنبال کنید. - میتوانید مراحل راهاندازی باقیمانده را نادیده بگیرید، زیرا هر چیز دیگری قبلاً در کد برنامه شروع پیکربندی شده است. برنامه خود را در صفحه اصلی کنسول Firebase لیست میکنید.
- فایل
google-services.json
(که به تازگی دانلود کردید) را در پوشهmessaging/fcm-topics-codelab/starter/StockNewsApp/app
کپی کنید.
4. برنامه خود را بسازید و اجرا کنید
شما آماده هستید که در واقع کار بر روی برنامه خود را شروع کنید! ابتدا اپلیکیشن را بسازید و اجرا کنید.
برنامه شروع را وارد کنید
Android Studio را راهاندازی کنید و messaging/fcm-topics-codelab/starter/StockNewsApp
از فهرست راهنمای کد شروع وارد کنید.
پس از بارگیری پروژه، همچنین ممکن است هشداری ببینید که Git تمام تغییرات محلی شما را ردیابی نمی کند، می توانید روی " نادیده گرفتن " یا " X " در بالا سمت راست کلیک کنید. (شما هیچ تغییری را به مخزن Git برنمیگردانید.)
در گوشه سمت چپ بالای پنجره پروژه، اگر در نمای اندروید هستید، باید چیزی شبیه به تصویر زیر ببینید. (اگر در نمای پروژه هستید، باید پروژه را گسترش دهید تا همان مورد را ببینید)
لطفاً توجه داشته باشید که Android Studio ممکن است چند ثانیه طول بکشد تا پروژه در پسزمینه برای اولین بار کامپایل شود. در این مدت یک اسپینر را در نوار وضعیت در پایین Android Studio خواهید دید:
توصیه می کنیم قبل از ایجاد تغییرات در کد، صبر کنید تا این کار تمام شود. این به Android Studio اجازه می دهد تا تمام اجزای لازم را وارد کند.
بهعلاوه، اگر پیامی دریافت کردید که میگوید «بارگذاری مجدد برای اعمال تغییرات زبان؟» یا چیزی مشابه، "بله" را انتخاب کنید.
راه اندازی شبیه ساز
اگر برای راه اندازی شبیه ساز اندروید به کمک نیاز دارید، به مقاله اجرای برنامه خود مراجعه کنید.
کد شروع برنامه Android را درک کنید
- کد شروع یک برنامه اندرویدی سبک وزن با حداقل عملکرد و رابط کاربری است.
- یک وابستگی به Firebase-messaging SDK قبلاً به فایل
app/build.gradle
اضافه شده است.
- در
AndroidManifest.xml
، یک کنترل کننده پاسخ تماسMESSAGING_EVENT
قبلاً اضافه شده است.- این کنترل کننده،
StockNewsMessagingService.java
کلاسFirebaseMessagingService
را گسترش می دهد که عملکردهای مختلف Firebase Cloud Messaging را ارائه می دهد. برای اطلاعات بیشتر به اسناد FirebaseMessagingService مراجعه کنید.
- تابع
onNewToken
زمانی فراخوانی می شود که توکن ثبت FCM ایجاد یا به روز شود. برای اطلاعات بیشتر به تولید توکن مانیتور مراجعه کنید. - تابع
onMessageReceived
زمانی که پیامی دریافت می شود و برنامه در پیش زمینه است فراخوانی می شود. در حال حاضر، به سادگی پیام دریافتی را ثبت می کند.- برای کسب اطلاعات بیشتر در مورد تفاوتهای بین تحویل و مدیریت پیام پسزمینه و پیشزمینه، به دریافت پیامها در یک برنامه Android مراجعه کنید.
- این کنترل کننده،
- همچنین در
AndroidManifest.xml
یک کلاس AndroidApplication
نیز با نامStockNewsApplication
ارائه شده است.- این کلاس اولین کلاسی خواهد بود که با راه اندازی برنامه نمونه سازی می شود.
- در تابع
onCreate
کلاسStockNewsApplication
، یک فراخوان ایجاد توکن ثبت FCM اضافه شده است. یک رمز ثبت FCM معتبر ایجاد می کند و آن را ثبت می کند.
-
MainActivity.java
RecyclerView
اضافه می کند که انتخاب های دسته سهام را نمایش می دهد. -
SubscriptionAdapter.java
RecyclerView.Adapter
پیاده سازی می کند که صفحه انتخاب دسته سهام را می کشد.- هر دسته سهام دارای یک نام و یک دکمه اشتراک در کنار آن است.
- تغییر کلید باید یک تماس اشتراک / لغو اشتراک موضوع FCM ایجاد کند.
- این فراخوان ها را در بخش های بعدی اجرا خواهید کرد.
- کلاس
model/StockCategories.java
حاوی لیستی از تمام دسته بندی های سهام و نام موضوعات مرتبط با آنها است.
برنامه استارتر را اجرا کنید
- دستگاه اندروید خود را به رایانه خود وصل کنید یا یک شبیه ساز راه اندازی کنید.
- در نوار ابزار بالا، دستگاه یا شبیه ساز اندروید مورد نظر خود را انتخاب کرده و دکمه اجرا را فشار دهید.
- رابط کاربری برنامه به شکل زیر خواهد بود:
- برنامه یک رمز ثبت FCM ایجاد می کند و آن را ثبت می کند. با این حال هیچ چیز در رابط کاربری برنامه تغییر نخواهد کرد.
- رمز ثبت FCM را کپی و ذخیره کنید تا در مراحل بعدی استفاده شود.
5. یک پیام آزمایشی ارسال کنید
اکنون آماده ارسال یک پیام آزمایشی به نمونه برنامه ای هستید که در مرحله آخر تنظیم کرده بودید.
کد سرور شروع را وارد کنید
IntelliJ IDEA را راه اندازی کنید و پروژه messaging/fcm-topics-codelab/starter/StockNewsServer
باز کنید.
نمای پروژه در نوار ناوبری سمت چپ شما باید چیزی شبیه به این باشد:
توجه داشته باشید، ممکن است چند دقیقه طول بکشد تا IntellIj IDEA پروژه شما را بسازد، از جمله وابستگی های مورد نیاز.
کد شروع سرور را درک کنید
- کد شروع سرور یک پروژه جاوا مبتنی بر Gradle است.
- فایل
build.gradle
از قبل وابستگی به Firebase-admin SDK اضافه شده به آن دارد. این SDK دسترسی به قابلیت های مختلف ارسال پیام FCM را فراهم می کند.
- در نهایت، دو دسته وجود دارد، یعنی:
-
FcmSender.java
: این کلاس شامل متدهای یادداشت زیر است:-
initFirebaseSDK
: Firebase-admin SDK را راهاندازی میکند. -
sendMessageToFcmRegistrationToken
: یک پیام به یک رمز ثبت FCM ارسال کنید. -
sendMessageToFcmTopic
: ارسال پیام به موضوع FCM. -
sendMessageToFcmTopicCondition
: یک پیام به یک شرط موضوع FCM ارسال کنید.
-
-
FcmSubscriptionManager.java
: این کلاس حاوی متدهایی است که امکان مدیریت اشتراک موضوع را از سمت سرور فراهم می کند.-
initFirebaseSDK
: Firebase-admin SDK را راهاندازی میکند. -
subscribeFcmRegistrationTokensToTopic
: توکن(های) ثبت FCM را در یک موضوع FCM مشترک کنید. -
unsubscribeFcmRegistrationTokensFromTopic
: لغو اشتراک توکن(های) ثبت FCM از موضوع FCM.
-
-
تنظیم کد سرور
- ابتدا باید یک حساب سرویس Firebase راهاندازی کنیم که به firebase-admin SDK اجازه دهد تا تماسها با APIهای FCM را مجاز کند.
- به کنسول Firebase بروید، روی نماد چرخ دنده کنار Project Overview در نوار پیمایش سمت چپ کلیک کنید و تنظیمات پروژه را انتخاب کنید.
- در صفحه تنظیمات، حسابهای سرویس را انتخاب کنید و روی ایجاد حساب سرویس کلیک کنید.
- اکنون بر روی دکمه Generate new private key کلیک کنید و دانلود خودکار فایل کلید شما آغاز می شود.
- فایل کلید را به
service-account.json
تغییر نام دهید و آن را در پوشهmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
کپی کنید. - هر دو
FcmSender.java
وFcmSubscriptionManager.java
فایلservice-account.json
را با استفاده از کد زیر از classpath بارگیری می کنند.
- در این مرحله کد سرور آماده است. Build -> Build Project را از نوار منوی بالا اجرا کنید.
ارسال پیام آزمایشی
- در
FcmSender.java
تابعsendMessageToFcmRegistrationToken
را پیدا کنید و رمز ثبت FCM را که از قسمت Run the starter app کپی کرده اید در قسمتregistrationToken
وارد کنید. - در تابع
main
، فقط تابعsendMessageToFcmRegistrationToken
را لغو کامنت کنید و روی run کلیک کنید تا کد اجرا شود.- مشاهده کنید که چگونه رمز ثبت FCM در فیلد
Token
شیءmessage
تنظیم می شود. - علاوه بر این، توجه داشته باشید که چگونه از
send
API رابطFirebaseMessaging
استفاده کردهایم.
- مشاهده کنید که چگونه رمز ثبت FCM در فیلد
- این باید یک پیام به نمونه برنامه ای که در مرحله قبل تنظیم کرده اید ارسال کند.
- هنگامی که نمونه برنامه در پیش زمینه است، باید محتوای پیام ثبت شده را مشاهده کنید.
- و هنگامی که نمونه برنامه در پسزمینه است، پیام را در سینی اعلانها مشاهده میکنید.
بسیار عالی، شما از Firebase Admin SDK برای ارسال پیام به یک نمونه برنامه استفاده کردید. درباره استفاده از Firebase Admin SDK در سرور خود بیشتر بخوانید.
6. اشتراک موضوع / لغو اشتراک را اجرا کنید
در این مرحله، اقدامهای اشتراک موضوع و لغو اشتراک را در دسته سهام برنامه اندروید اجرا میکنید.
هنگامی که یک کاربر برنامه سوئیچ را برای یک دسته سهام خاص تغییر می دهد، یک اشتراک موضوع یا تماس لغو اشتراک برقرار می شود.
بررسی کد
- به کلاس
SubscriptionAdapter.java
در کد برنامه Android بروید و کلاسRecyclerViewViewHolder
را پیدا کنید.
- سازنده کلاس با استفاده از
setOnCheckedChangeListener
یک شنونده برای تغییر اشتراک تنظیم می کند. - بسته به تغییر سوئیچ، عملیات اشتراک و لغو اشتراک به ترتیب با فراخوانی متدهای
subscribeToStockCategory
وunsubscribeFromStockCategory
انجام می شود. - متد
setData
توسطonBindViewHolder
آداپتور RecyclerView فراخوانی می شود تا ViewHolder را با دسته سهام مناسب پیوند دهد.
اجرای اشتراک موضوع
- در متد
subscribeToStockCategory
، فراخوانی برایsubscribeToTopic
API شیFirebaseMessaging
اجرا خواهید کرد. کد می تواند چیزی شبیه به این باشد:
void subscribeToStockCategory() { // Making call to FCM for subscribing to the topic for stockCategory FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener( unused -> { // Subscribing action successful Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
لغو اشتراک موضوع را اجرا کنید
- به همین ترتیب، در شرایط else، فراخوان
unsubscribeFromTopic
API را اجرا میکنید. چیزی در راستای موارد زیر:
void unsubscribeFromStockCategory() { // Making call to FCM for unsubscribing from the topic for stockCategory FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName()) .addOnSuccessListener(unused -> { // Unsubscribing action successful Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
بیایید آن را امتحان کنیم
- برنامه را اجرا کنید و گزینه های Stock Category را تغییر دهید تا اقدامات Subscribe و Unsubscribe را اجرا کنید. چیزی شبیه به این خواهد بود:
مشترک شوید | لغو اشتراک |
7. ارسال اولین پیام موضوع
در این مرحله کد سمت سرور را برای ارسال پیام موضوعی FCM پیاده سازی می کنید.
اجرای یکپارچه سازی سمت سرور برای ارسال پیام موضوعی
- در کد سرور، به
FcmSender.java
بروید و روشی به نامsendMessageToFcmTopic
را پیدا کنید.
- در خط اول، موضوع FCM را که می خواهید پیام را به آن ارسال کنید، ارائه دهید.
- این یک رشته به شکل است:
/topics/<Topic Name>
. به عنوان مثال،/topics/Technology
.
- این یک رشته به شکل است:
- در خطوط بعدی یک شیء
message
جدید ایجاد کنید (مشابه آنچه در تابعsendMessageToFcmRegistrationToken
تعریف شده است).- تفاوت این است که به جای تنظیم فیلد
Token
شیءmessage
، فیلدTopic
را تنظیم می کنید.
- تفاوت این است که به جای تنظیم فیلد
Message message = Message.builder() .putData("FOOTECH", "$1000") .setNotification( Notification.builder() .setTitle("Investor confidence in Tech Stocks growing") .setBody("Foo Tech leading the way in stock growth for Tech sector.") .build()) .setTopic(topicName) .build();
- اکنون برای ارسال پیام، تماس را به نمونه
FirebaseMessaging
اضافه کنید (همانند تماس ارسالی که در تابعsendMessageToFcmRegistrationToken
انجام شده است).
FirebaseMessaging.getInstance().send(message);
- در نهایت، تابع
main
را به روز کنید و تماس را فقط برای تابعsendMessageToFcmTopic
فعال کنید.
ارسال پیام و تایید رسید
- قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما مشترک موضوعی است که میخواهید برای آن ارسال کنید.
- این را می توان با چرخاندن ضامن مربوطه انجام داد. به عنوان مثال:
- اکنون می توانید پیام موضوع خود را با اجرای تابع
main
FcmSender.java
ارسال کنید. - مانند قبل، باید بتوانید دریافت پیام را در نمونه برنامه مشاهده کنید.
- نمونه برنامه در پیش زمینه
- نمونه برنامه در پس زمینه
- پاداش: سعی کنید اشتراک موضوعی را که به آن ارسال کرده اید لغو کنید و پیام را دوباره ارسال کنید. مشاهده می کنید که پیام به نمونه برنامه تحویل داده نمی شود.
8. ارسال اولین پیام وضعیت موضوع
ویژگی شرط موضوع به شما امکان می دهد پیام هایی را به ترکیبی از موضوعات ارسال کنید که به شما امکان می دهد تعریف واضح تری از مخاطب ارائه دهید.
به عنوان مثال، در برنامه StockNews ما، امکان ارسال پیام به گروهی از نمونه های برنامه را در نظر بگیرید که مشترک موضوعات فناوری یا خودرو هستند. برای مثال، اگر رویداد قابل توجهی در رابطه با Waymo وجود داشته باشد، ممکن است چنین موردی رخ دهد.
Topics به شما امکان می دهد ترکیب خود را در قالب یک عبارت بولی با استفاده از عملگرهای زیر بیان کنید
- &&: منطقی AND. برای مثال،
'Technology' in topics && 'Automotive' in topics
- فقط نمونههای برنامههایی را هدف قرار میدهد که مشترک موضوعات فناوری و خودرو هستند. - || : منطقی OR. به عنوان مثال،
'Technology' in topics || 'Automotive' in topics
- نمونههای برنامههایی را هدف قرار میدهد که مشترک موضوعات فناوری یا خودرو هستند. - () : پرانتز برای گروه بندی. برای مثال،
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
- فقط نمونههای برنامههایی را هدف قرار میدهد که مشترک فناوری و موضوعات خودرو یا انرژی هستند.
درباره نحوه ساخت درخواست ارسال برای استفاده از این قابلیت بیشتر بخوانید.
اجرای یکپارچه سازی سمت سرور برای ارسال پیام وضعیت موضوع
- به کد سرور برگردید، به
FcmSender.java
بروید و روشی به نامsendMessageToFcmTopicCondition
را پیدا کنید.
- در خط اول، برای متغیر
topicCondition
، شرط موضوعی را که می خواهید پیام را به آن ارسال کنید، ارائه دهید. میتوانید آن را روی:'Technology' in topics && 'Automotive' in topics
تنظیم کنید. - در خطوط بعدی، یک شیء
message
جدید (مشابه آنچه در تابعsendMessageToFcmTopic
تعریف شده است) ایجاد کنید.- تفاوت این است که به جای تنظیم فیلد
Topic
شی، فیلدCondition
را تنظیم می کنید.
- تفاوت این است که به جای تنظیم فیلد
Message message = Message.builder() .putData("FOOCAR", "$500") .setNotification( Notification.builder() .setTitle("Foo Car shows strong Q2 results") .setBody("Foo Car crosses 1B miles. Stocks rally.") .build()) .setCondition(topicCondition) .build();
- اکنون برای ارسال پیام، تماس را به نمونه
FirebaseMessaging
اضافه کنید (همانند تماس ارسالی که در تابعsendMessageToFcmTopic
انجام شده است).
FirebaseMessaging.getInstance().send(message);
- در نهایت، تابع
main
را به روز کنید و تماس را فقط برای تابعsendMessageToFcmTopicCondition
فعال کنید.
پیام ارسال کنید و رسید را تایید کنید
- قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما شرایط موضوع مشخص شده را با اشتراک نمونه برنامه در هر دو موضوع فناوری و خودرو، برآورده می کند.
- اکنون می توانید پیام موضوع خود را با اجرای تابع
main
FcmSender.java
ارسال کنید. - مانند قبل، باید بتوانید دریافت پیام را در نمونه برنامه مشاهده کنید.
- نمونه برنامه در پیش زمینه
- نمونه برنامه در پس زمینه
- پاداش: اکنون می توانید اشتراک موضوع فناوری را لغو کنید و پیام وضعیت موضوع را دوباره ارسال کنید. باید توجه داشته باشید که پیام توسط نمونه برنامه دریافت نمی شود.
9. خلاصه کنید
بیایید خلاصهای سریع از آنچه تا این لحظه یاد گرفتهاید، انجام دهیم.
- نحوه شروع اشتراک موضوع / لغو اشتراک از یک نمونه برنامه.
- ارسال پیام به موضوع و تأیید رسید در نمونههای برنامه مشترک.
- ارسال پیام به یک موضوع شرایط و تأیید رسید در یک نمونه برنامه که شرایط را برآورده می کند.
در بخش بعدی، با نحوه اشتراک/لغو اشتراک نمونه های برنامه در موضوعات بدون نیاز به برقراری تماس از سمت مشتری آشنا خواهید شد.
10. اشتراک های موضوع را از سمت سرور مدیریت کنید
تاکنون، در این لبه کد، تمام تماسهای اشتراک موضوع و لغو اشتراک از یک نمونه برنامه آغاز میشود.
با این حال، در برخی موارد استفاده، ممکن است بخواهید اشتراک موضوع را از سمت سرور مدیریت کنید. به عنوان مثال، ممکن است بخواهید یک زیرگروه از پایگاه کاربری موجود خود را در یک موضوع جدید بدون منتظر ماندن برای عرضه برنامه مشترک کنید.
در این بخش، نحوه استفاده از Firebase Admin SDK را برای اشتراک و لغو اشتراک دسته ای از توکن های ثبت FCM در یک موضوع با برقراری تماس از سمت سرور، یاد خواهید گرفت.
اشتراک سمت سرور رمزهای ثبت FCM را در موضوع FCM پیاده سازی کنید
- در کد سرور، به کلاس
FcmSubscriptionManager.java
بروید. روشی به نامsubscribeFcmRegistrationTokensToTopic
را پیدا کنید. شما فراخوانsubscribeToTopic
API را در اینجا اجرا خواهید کرد.
- بیایید نمونه برنامه را در موضوع انرژی مشترک کنیم. برای انجام این کار، ابتدا داده های دو فیلد زیر را ارائه دهید:
-
registrationTokens
: فهرستی از رشتههایی که با کاما از هم جدا شدهاند که نشاندهنده نشانههای ثبت FCM است که میخواهید برای آنها اشتراک موضوعی ایجاد کنید. -
topicName
: نام موضوع برای موضوع انرژی، به عنوان مثال/topics/Energy
.
-
- در چند خط بعدی فراخوانی را در امتداد این خطوط اجرا کنید:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- شما می توانید
TopicManagementResponse
برای برخی از آمار نتایج سطح بالا بررسی کنید. مانند چاپ تعداد اشتراکهای موضوعی که با موفقیت ایجاد شدهاند با استفاده ازgetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- در نهایت، در تابع
main
فقط با تابعsubscribeFcmRegistrationTokensToTopic
تماس ها را فعال کنید.
ایجاد اشتراک و ارسال پیام موضوع
- در این مرحله شما آماده ایجاد اشتراک موضوع و ارسال پیام به آن هستید.
- تابع
main
کلاسFcmSubscriptionManager.java
را اجرا کنید. این یک اشتراک موضوع ایجاد می کند. - اکنون، کدی را برای ارسال پیام تنظیم کنید. مشابه قبل،
- در
FcmSender.java
، تابعsendMessageToFcmTopic
را پیدا کنید. -
topicName
را روی مبحث انرژی، یعنی/topics/Energy
تنظیم کنید. - یک شیء
Message
ایجاد کنید و آن را با استفاده ازsetTopic
به موضوع مورد نظر هدف قرار دهید. - در نهایت، روش
main
را به روز کنید تا فقط تابعsendMessageToFcmTopic
را فعال کند.
- در
- تابع
main
FcmSender.java
را اجرا کنید. این پیام را به نمونه برنامه شما ارسال می کند و می توانید آن را به صورت زیر در برنامه خود مشاهده کنید.- نمونه برنامه در پیش زمینه
- نمونه برنامه در پس زمینه
لغو اشتراک توکنهای ثبت FCM از سمت سرور در موضوع FCM را اجرا کنید
- برای لغو اشتراک موضوع سمت سرور، از این
unsubscribeFromTopic
API استفاده کنید. کد مربوطه را به تابعunsubscribeFcmRegistrationTokensFromTopic
کلاسFcmSubscriptionManager.java
اضافه می کنید.
- پیاده سازی کد لغو اشتراک سمت سرور و تایید اثر آن با ارسال یک پیام موضوعی، به عنوان تمرین برای شما باقی مانده است.
11. تبریک می گویم
تبریک میگوییم که با موفقیت از موضوعات FCM برای ارسال پیامهای چندپخشی به زیرگروههای نمونه برنامهتان استفاده کردید. این به سادهسازی توانایی شما برای دسترسی به موقع به کاربران با محتوای مرتبط کمک میکند.
بعدش چی؟
اکنون که نرم افزار کد خود را تکمیل کرده اید، با استفاده از راهنماهای زیر، موضوعات را برای پلتفرم های دیگر امتحان کنید: