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 ایجاد کنید
- با استفاده از حساب Google خود وارد کنسول Firebase شوید.
- برای ایجاد یک پروژه جدید، روی دکمه کلیک کنید و سپس نام پروژه را وارد کنید (به عنوان مثال،
StockNews). - روی Continue کلیک کنید.
- در صورت درخواست، شرایط Firebase را بررسی کرده و بپذیرید و سپس روی Continue کلیک کنید.
- (اختیاری) کمک هوش مصنوعی را در کنسول Firebase (به نام "Gemini in Firebase") فعال کنید.
- برای این کد لبه، شما نیازی به Google Analytics ندارید ، بنابراین گزینه Google Analytics را خاموش کنید .
- روی ایجاد پروژه کلیک کنید، منتظر بمانید تا پروژه شما ارائه شود و سپس روی ادامه کلیک کنید.
تبریک می گویم! شما به تازگی پروژه 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.javaRecyclerViewرا اضافه می کند که انتخاب های دسته سهام را نمایش می دهد. -
SubscriptionAdapter.javaRecyclerView.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 بارگیری می کنند.
- به کنسول Firebase بروید، روی نماد چرخ دنده کنار Project Overview در نوار پیمایش سمت چپ کلیک کنید و تنظیمات پروژه را انتخاب کنید.
- در این مرحله کد سرور آماده است. Build -> Build Project را از نوار منوی بالا اجرا کنید.
ارسال پیام آزمایشی
- در
FcmSender.javaتابعsendMessageToFcmRegistrationTokenرا پیدا کنید و رمز ثبت FCM را که از قسمت Run the starter app کپی کرده اید در قسمتregistrationTokenوارد کنید. - در تابع
main، فقط تابعsendMessageToFcmRegistrationTokenرا لغو کامنت کنید و روی run کلیک کنید تا کد اجرا شود.- مشاهده کنید که چگونه رمز ثبت FCM در فیلد
Tokenشیءmessageتنظیم می شود. - علاوه بر این، توجه داشته باشید که چگونه از
sendAPI رابطFirebaseMessagingاستفاده کردهایم.
- مشاهده کنید که چگونه رمز ثبت FCM در فیلد

- این باید یک پیام به نمونه برنامه ای که در مرحله قبل تنظیم کرده اید ارسال کند.
- هنگامی که نمونه برنامه در پیش زمینه است، باید محتوای پیام ثبت شده را مشاهده کنید.

- و هنگامی که نمونه برنامه در پسزمینه است، پیام را در سینی اعلانها مشاهده میکنید.

بسیار عالی، شما از Firebase Admin SDK برای ارسال پیام به یک نمونه برنامه استفاده کردید. درباره استفاده از Firebase Admin SDK در سرور خود بیشتر بخوانید.
6. اشتراک موضوع / لغو اشتراک را اجرا کنید
در این مرحله، اقدامهای اشتراک موضوع و لغو اشتراک را در دسته سهام برنامه اندروید اجرا میکنید.
هنگامی که یک کاربر برنامه سوئیچ را برای یک دسته سهام خاص تغییر می دهد، یک اشتراک موضوع یا تماس لغو اشتراک برقرار می شود.
بررسی کد
- به کلاس
SubscriptionAdapter.javaدر کد برنامه Android بروید و کلاسRecyclerViewViewHolderپیدا کنید.

- سازنده کلاس با استفاده از
setOnCheckedChangeListenerیک شنونده برای تغییر اشتراک تنظیم می کند. - بسته به تغییر سوئیچ، عملیات اشتراک و لغو اشتراک به ترتیب با فراخوانی متدهای
subscribeToStockCategoryوunsubscribeFromStockCategoryانجام می شود. - متد
setDataتوسطonBindViewHolderآداپتور RecyclerView فراخوانی می شود تا ViewHolder را با دسته سهام مناسب پیوند دهد.
اجرای اشتراک موضوع
- در متد
subscribeToStockCategory، فراخوانی برایsubscribeToTopicAPI شی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، فراخوان
unsubscribeFromTopicAPI را اجرا میکنید. چیزی در راستای موارد زیر:
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فعال کنید.

ارسال پیام و تایید رسید
- قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما مشترک موضوعی است که میخواهید برای آن ارسال کنید.
- این را می توان با چرخاندن ضامن مربوطه انجام داد. به عنوان مثال:

- اکنون می توانید پیام موضوع خود را با اجرای تابع
mainFcmSender.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فعال کنید.

پیام ارسال کنید و رسید را تایید کنید
- قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما شرایط موضوع مشخص شده را با اشتراک نمونه برنامه در هر دو موضوع فناوری و خودرو، برآورده می کند.
- اکنون می توانید پیام موضوع خود را با اجرای تابع
mainFcmSender.javaارسال کنید. - مانند قبل، باید بتوانید دریافت پیام را در نمونه برنامه مشاهده کنید.
- نمونه برنامه در پیش زمینه

- نمونه برنامه در پس زمینه

- پاداش: اکنون می توانید اشتراک موضوع فناوری را لغو کنید و پیام وضعیت موضوع را دوباره ارسال کنید. باید توجه داشته باشید که پیام توسط نمونه برنامه دریافت نمی شود.
9. خلاصه کنید
بیایید خلاصهای سریع از آنچه تا این لحظه یاد گرفتهاید، انجام دهیم.
- نحوه شروع اشتراک موضوع / لغو اشتراک از یک نمونه برنامه.
- ارسال پیام به موضوع و تأیید رسید در نمونههای برنامه مشترک.
- ارسال پیام به یک موضوع شرایط و تأیید رسید در یک نمونه برنامه که شرایط را برآورده می کند.
در بخش بعدی، با نحوه اشتراک/لغو اشتراک نمونه های برنامه در موضوعات بدون نیاز به برقراری تماس از سمت مشتری آشنا خواهید شد.

10. اشتراک های موضوع را از سمت سرور مدیریت کنید
تاکنون، در این لبه کد، تمام تماسهای اشتراک موضوع و لغو اشتراک از یک نمونه برنامه آغاز میشود.
با این حال، در برخی موارد استفاده، ممکن است بخواهید اشتراک موضوع را از سمت سرور مدیریت کنید. به عنوان مثال، ممکن است بخواهید یک زیرگروه از پایگاه کاربری موجود خود را در یک موضوع جدید بدون انتظار برای عرضه برنامه مشترک کنید.
در این بخش، نحوه استفاده از Firebase Admin SDK را برای اشتراک و لغو اشتراک دسته ای از توکن های ثبت FCM در یک موضوع با برقراری تماس از سمت سرور، یاد خواهید گرفت.
اشتراک سمت سرور رمزهای ثبت FCM را در موضوع FCM پیاده سازی کنید
- در کد سرور، به کلاس
FcmSubscriptionManager.javaبروید. روشی به نامsubscribeFcmRegistrationTokensToTopicرا پیدا کنید. شما فراخوانsubscribeToTopicAPI را در اینجا اجرا خواهید کرد.

- بیایید نمونه برنامه را در موضوع انرژی مشترک کنیم. برای انجام این کار، ابتدا داده های دو فیلد زیر را ارائه دهید:
-
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را فعال کند.
- در
- تابع
mainFcmSender.javaرا اجرا کنید. این پیام را به نمونه برنامه شما ارسال می کند و می توانید آن را به صورت زیر در برنامه خود مشاهده کنید.- نمونه برنامه در پیش زمینه

- نمونه برنامه در پس زمینه

لغو اشتراک توکنهای ثبت FCM در موضوع FCM را در سمت سرور اجرا کنید
- برای لغو اشتراک موضوع سمت سرور، از این
unsubscribeFromTopicAPI استفاده کنید. کد مربوطه را به تابعunsubscribeFcmRegistrationTokensFromTopicکلاسFcmSubscriptionManager.javaاضافه می کنید.

- پیاده سازی کد لغو اشتراک سمت سرور و تایید اثر آن با ارسال یک پیام موضوعی، به عنوان تمرین برای شما باقی مانده است.
11. تبریک می گویم
تبریک میگوییم که با موفقیت از موضوعات FCM برای ارسال پیامهای چندپخشی به زیرگروههای نمونه برنامهتان استفاده کردید. این به سادهسازی توانایی شما برای دسترسی به موقع به کاربران با محتوای مرتبط کمک میکند.

بعدش چی؟
اکنون که نرم افزار کد خود را تکمیل کرده اید، با استفاده از راهنماهای زیر، موضوعات را برای پلتفرم های دیگر امتحان کنید:

