اولین پیام فشار چندپخشی شما با استفاده از موضوعات FCM

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 ایجاد کنید

  1. در کنسول Firebase ، روی Add project کلیک کنید، نام پروژه Firebase را StockNews بگذارید و روی ادامه کلیک کنید. توجه: شناسه پروژه برای پروژه Firebase خود را به خاطر بسپارید (یا روی نماد ویرایش کلیک کنید تا شناسه پروژه دلخواه خود را تنظیم کنید).

fc08f9a7808e4553.png

  1. می توانید از فعال کردن Google Analytics صرف نظر کنید. برای اهداف این نرم افزار کد، شما به آن نیاز ندارید. روی Continue کلیک کنید.
  2. روی ایجاد پروژه کلیک کنید.

تبریک می گویم! شما به تازگی پروژه Firebase خود را ایجاد کرده اید. اکنون می توانید روی نام پروژه کلیک کنید تا وارد کنسول شوید.

3. پیکربندی برنامه Firebase مخصوص پلتفرم

اکثر تغییرات کد مورد نیاز برای فعال کردن پشتیبانی Firebase قبلاً در پروژه ای که روی آن کار می کنید بررسی شده است. با این حال، برای افزودن پشتیبانی از پلتفرم های تلفن همراه، باید:

  • پلتفرم مورد نظر را در پروژه Firebase ثبت کنید
  • فایل پیکربندی مخصوص پلتفرم را دانلود کرده و به کد اضافه کنید.

برای اهداف این نرم افزار کد، ما قصد داریم یک برنامه Android Firebase را اضافه کنیم.

84e0b3199bef6d8a.png اندروید را پیکربندی کنید

  1. در کنسول Firebase ، تنظیمات پروژه را در بالای نوار پیمایش سمت چپ در دکمه تنظیمات انتخاب کنید و روی نماد Android در زیر برنامه‌های شما در صفحه عمومی کلیک کنید.

شما باید دیالوگ زیر را ببینید: 8254fc299e82f528.png

  1. ارزش مهمی که باید ارائه شود نام بسته Android است. آن را روی com.ticker.stocknews تنظیم کنید.
    1. نام بسته ارائه شده در اینجا باید با نام ارائه شده در AndroidManifest.xml کد شروع کننده StockNewsApp شما باشد. اگر می خواهید آن را پیدا کنید یا تغییر دهید، این مراحل را دنبال کنید:
      1. در پوشه StockNewsApp ، فایل app/src/main/AndroidManifest.xml را باز کنید.
      2. در عنصر manifest ، مقدار رشته ویژگی package را پیدا کنید. این مقدار نام بسته اندروید است.
  1. در محاوره Firebase، نام بسته کپی شده را در قسمت نام بسته Android قرار دهید.
  2. شما به گواهی امضای Debug SHA-1 برای این کد لبه نیازی ندارید، زیرا این برنامه منتشر نخواهد شد. این را خالی بگذارید.
  3. روی ثبت برنامه کلیک کنید.
  4. برای ادامه در کنسول Firebase، دستورالعمل‌ها را برای دانلود فایل پیکربندی google-services.json دنبال کنید.
  5. می‌توانید مراحل راه‌اندازی باقی‌مانده را نادیده بگیرید، زیرا هر چیز دیگری قبلاً در کد برنامه شروع پیکربندی شده است. برنامه خود را در صفحه اصلی کنسول Firebase لیست می‌کنید.
  6. فایل google-services.json (که به تازگی دانلود کردید) را در پوشه messaging/fcm-topics-codelab/starter/StockNewsApp/app کپی کنید.

4. برنامه خود را بسازید و اجرا کنید

شما آماده هستید که در واقع کار بر روی برنامه خود را شروع کنید! ابتدا اپلیکیشن را بسازید و اجرا کنید.

برنامه شروع را وارد کنید

Android Studio را راه‌اندازی کنید و messaging/fcm-topics-codelab/starter/StockNewsApp از فهرست راهنمای کد شروع وارد کنید.

پس از بارگیری پروژه، همچنین ممکن است هشداری ببینید که Git تمام تغییرات محلی شما را ردیابی نمی کند، می توانید روی " نادیده گرفتن " یا " X " در بالا سمت راست کلیک کنید. (شما هیچ تغییری را به مخزن Git برنمی‌گردانید.)

در گوشه سمت چپ بالای پنجره پروژه، اگر در نمای اندروید هستید، باید چیزی شبیه به تصویر زیر ببینید. (اگر در نمای پروژه هستید، باید پروژه را گسترش دهید تا همان مورد را ببینید)

b574ea0089ee87c6.png

لطفاً توجه داشته باشید که Android Studio ممکن است چند ثانیه طول بکشد تا پروژه در پس‌زمینه برای اولین بار کامپایل شود. در این مدت یک اسپینر را در نوار وضعیت در پایین Android Studio خواهید دید:

4bc64eb3b99eb0ae.png

توصیه می کنیم قبل از ایجاد تغییرات در کد، صبر کنید تا این کار تمام شود. این به Android Studio اجازه می دهد تا تمام اجزای لازم را وارد کند.

به‌علاوه، اگر پیامی دریافت کردید که می‌گوید «بارگذاری مجدد برای اعمال تغییرات زبان؟» یا چیزی مشابه، "بله" را انتخاب کنید.

راه اندازی شبیه ساز

اگر برای راه اندازی شبیه ساز اندروید به کمک نیاز دارید، به مقاله اجرای برنامه خود مراجعه کنید.

کد شروع برنامه Android را درک کنید

  • کد شروع یک برنامه اندرویدی سبک وزن با حداقل عملکرد و رابط کاربری است.
  • یک وابستگی به Firebase-messaging SDK قبلاً به فایل app/build.gradle اضافه شده است.

f04ff8f48d186dff.png

  • در AndroidManifest.xml ، یک کنترل کننده پاسخ تماس MESSAGING_EVENT قبلاً اضافه شده است.
    • این کنترل کننده، StockNewsMessagingService.java کلاس FirebaseMessagingService را گسترش می دهد که عملکردهای مختلف Firebase Cloud Messaging را ارائه می دهد. برای اطلاعات بیشتر به اسناد FirebaseMessagingService مراجعه کنید. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • تابع onNewToken زمانی فراخوانی می شود که توکن ثبت FCM ایجاد یا به روز شود. برای اطلاعات بیشتر به تولید توکن مانیتور مراجعه کنید.
    • تابع onMessageReceived زمانی که پیامی دریافت می شود و برنامه در پیش زمینه است فراخوانی می شود. در حال حاضر، به سادگی پیام دریافتی را ثبت می کند.
  • همچنین در AndroidManifest.xml یک کلاس Android Application نیز با نام StockNewsApplication ارائه شده است. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • این کلاس اولین کلاسی خواهد بود که با راه اندازی برنامه نمونه سازی می شود.
    • در تابع onCreate کلاس StockNewsApplication ، یک فراخوان ایجاد توکن ثبت FCM اضافه شده است. یک رمز ثبت FCM معتبر ایجاد می کند و آن را ثبت می کند.
  • MainActivity.java RecyclerView اضافه می کند که انتخاب های دسته سهام را نمایش می دهد.
  • SubscriptionAdapter.java RecyclerView.Adapter را پیاده سازی می کند که صفحه انتخاب دسته سهام را می کشد.
    • هر دسته سهام دارای یک نام و یک دکمه اشتراک در کنار آن است.
    • تغییر کلید باید یک تماس اشتراک / لغو اشتراک موضوع FCM ایجاد کند.
    • این فراخوان ها را در بخش های بعدی اجرا خواهید کرد.
  • کلاس model/StockCategories.java حاوی لیستی از تمام دسته بندی های سهام و نام موضوعات مرتبط با آنها است.

b32663ec4e865a18.png

برنامه استارتر را اجرا کنید

  1. دستگاه اندروید خود را به رایانه خود وصل کنید یا یک شبیه ساز راه اندازی کنید.
  2. در نوار ابزار بالا، دستگاه یا شبیه ساز اندروید مورد نظر خود را انتخاب کرده و دکمه اجرا را فشار دهید.

5b27fc5b237e06b9.png

  1. رابط کاربری برنامه به شکل زیر خواهد بود:

ff5b1a1c53231c54.png

  1. برنامه یک رمز ثبت FCM ایجاد می کند و آن را ثبت می کند. با این حال هیچ چیز در رابط کاربری برنامه تغییر نخواهد کرد.
    1. رمز ثبت FCM را کپی و ذخیره کنید تا در مراحل بعدی استفاده شود.

927eb66bc909f36b.png

5. یک پیام آزمایشی ارسال کنید

اکنون آماده ارسال یک پیام آزمایشی به نمونه برنامه ای هستید که در مرحله آخر تنظیم کرده بودید.

کد سرور شروع را وارد کنید

IntelliJ IDEA را راه اندازی کنید و پروژه messaging/fcm-topics-codelab/starter/StockNewsServer را باز کنید.

نمای پروژه در نوار ناوبری سمت چپ شما باید چیزی شبیه به این باشد:

da20711f6527dff6.png

توجه داشته باشید، ممکن است چند دقیقه طول بکشد تا IntellIj IDEA پروژه شما را بسازد، از جمله وابستگی های مورد نیاز.

کد شروع سرور را درک کنید

  • کد شروع سرور یک پروژه جاوا مبتنی بر Gradle است.
  • فایل build.gradle از قبل وابستگی به Firebase-admin SDK اضافه شده به آن دارد. این SDK دسترسی به قابلیت های مختلف ارسال پیام FCM را فراهم می کند.

650fc733298588f8.png

  • در نهایت، دو دسته وجود دارد، یعنی:
    • FcmSender.java : این کلاس شامل متدهای یادداشت زیر است:
      • initFirebaseSDK : Firebase-admin SDK را راه‌اندازی می‌کند.
      • sendMessageToFcmRegistrationToken : یک پیام به یک رمز ثبت FCM ارسال کنید.
      • sendMessageToFcmTopic : ارسال پیام به موضوع FCM.
      • sendMessageToFcmTopicCondition : یک پیام به یک شرط موضوع FCM ارسال کنید.
    • FcmSubscriptionManager.java : این کلاس حاوی متدهایی است که امکان مدیریت اشتراک موضوع را از سمت سرور فراهم می کند.
      • initFirebaseSDK : Firebase-admin SDK را راه‌اندازی می‌کند.
      • subscribeFcmRegistrationTokensToTopic : توکن(های) ثبت FCM را در یک موضوع FCM مشترک کنید.
      • unsubscribeFcmRegistrationTokensFromTopic : لغو اشتراک توکن(های) ثبت FCM از موضوع FCM.

تنظیم کد سرور

  1. ابتدا باید یک حساب سرویس Firebase راه‌اندازی کنیم که به firebase-admin SDK اجازه دهد تا تماس‌ها با APIهای FCM را مجاز کند.
    1. به کنسول Firebase بروید، روی نماد چرخ دنده کنار Project Overview در نوار پیمایش سمت چپ کلیک کنید و تنظیمات پروژه را انتخاب کنید. 8c2108d4d7c915e9.png
    2. در صفحه تنظیمات، حساب‌های سرویس را انتخاب کنید و روی ایجاد حساب سرویس کلیک کنید. 84b128cc5dac0a85.png
    3. اکنون بر روی دکمه Generate new private key کلیک کنید و دانلود خودکار فایل کلید شما آغاز می شود.
    4. فایل کلید را به service-account.json تغییر نام دهید و آن را در پوشه messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources کپی کنید.
    5. هر دو FcmSender.java و FcmSubscriptionManager.java فایل service-account.json را با استفاده از کد زیر از classpath بارگیری می کنند. 8dffbee658e0bdd.png
  2. در این مرحله کد سرور آماده است. Build -> Build Project را از نوار منوی بالا اجرا کنید.

ارسال پیام آزمایشی

  1. در FcmSender.java تابع sendMessageToFcmRegistrationToken را پیدا کنید و رمز ثبت FCM را که از قسمت Run the starter app کپی کرده اید در قسمت registrationToken وارد کنید.
  2. در تابع main ، فقط تابع sendMessageToFcmRegistrationToken را لغو کامنت کنید و روی run کلیک کنید تا کد اجرا شود.
    1. مشاهده کنید که چگونه رمز ثبت FCM در فیلد Token شیء message تنظیم می شود.
    2. علاوه بر این، توجه داشته باشید که چگونه از send API رابط FirebaseMessaging استفاده کرده‌ایم.

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

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

31203deca59c03fe.png

بسیار عالی، شما از Firebase Admin SDK برای ارسال پیام به یک نمونه برنامه استفاده کردید. درباره استفاده از Firebase Admin SDK در سرور خود بیشتر بخوانید.

6. اشتراک موضوع / لغو اشتراک را اجرا کنید

در این مرحله، اقدام‌های اشتراک موضوع و لغو اشتراک را در دسته سهام برنامه اندروید اجرا می‌کنید.

هنگامی که یک کاربر برنامه سوئیچ را برای یک دسته سهام خاص تغییر می دهد، یک اشتراک موضوع یا تماس لغو اشتراک برقرار می شود.

بررسی کد

  • به کلاس SubscriptionAdapter.java در کد برنامه Android بروید و کلاس RecyclerViewViewHolder را پیدا کنید.

6c0614199e684f6.png

  • سازنده کلاس با استفاده از setOnCheckedChangeListener یک شنونده برای تغییر اشتراک تنظیم می کند.
  • بسته به تغییر سوئیچ، عملیات اشتراک و لغو اشتراک به ترتیب با فراخوانی متدهای subscribeToStockCategory و unsubscribeFromStockCategory انجام می شود.
  • متد setData توسط onBindViewHolder آداپتور RecyclerView فراخوانی می شود تا ViewHolder را با دسته سهام مناسب پیوند دهد.

اجرای اشتراک موضوع

  1. در متد 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();
          });
    }

لغو اشتراک موضوع را اجرا کنید

  1. به همین ترتیب، در شرایط 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();
          });
    }

بیایید آن را امتحان کنیم

  1. برنامه را اجرا کنید و گزینه های Stock Category را تغییر دهید تا اقدامات Subscribe و Unsubscribe را اجرا کنید. چیزی شبیه به این خواهد بود:

اشتراک در

لغو اشتراک

7. ارسال اولین پیام موضوع

در این مرحله کد سمت سرور را برای ارسال پیام موضوعی FCM پیاده سازی می کنید.

اجرای یکپارچه سازی سمت سرور برای ارسال پیام موضوعی

  1. در کد سرور، به FcmSender.java بروید و روشی به نام sendMessageToFcmTopic را پیدا کنید.

56381dd1b40cde9c.png

  1. در خط اول، موضوع FCM را که می خواهید پیام را به آن ارسال کنید، ارائه دهید.
    • این یک رشته به شکل است: /topics/<Topic Name> . به عنوان مثال، /topics/Technology .
  2. در خطوط بعدی یک شیء 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();
  1. اکنون برای ارسال پیام، تماس را به نمونه FirebaseMessaging اضافه کنید (همانند تماس ارسالی که در تابع sendMessageToFcmRegistrationToken انجام شده است).
FirebaseMessaging.getInstance().send(message);
  1. در نهایت، تابع main را به روز کنید و تماس را فقط برای تابع sendMessageToFcmTopic فعال کنید.

9a6aa08dd7c28898.png

ارسال پیام و تایید رسید

  1. قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما مشترک موضوعی است که می‌خواهید برای آن ارسال کنید.
    1. این را می توان با چرخاندن ضامن مربوطه انجام داد. مثلا:
    4668247408377712.png
  2. اکنون می توانید پیام موضوع خود را با اجرای تابع main FcmSender.java ارسال کنید.
  3. مانند قبل، باید بتوانید دریافت پیام را در نمونه برنامه مشاهده کنید.
    1. نمونه برنامه در پیش زمینه
    c144721399f610fe.png
    1. نمونه برنامه در پس زمینه
    44efc7dfd57e8e9a.png
  4. پاداش: سعی کنید اشتراک موضوعی را که به آن ارسال کرده اید لغو کنید و پیام را دوباره ارسال کنید. مشاهده می کنید که پیام به نمونه برنامه تحویل داده نمی شود.

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) - فقط نمونه‌های برنامه‌هایی را هدف قرار می‌دهد که مشترک فناوری و موضوعات خودرو یا انرژی هستند.

درباره نحوه ساخت درخواست ارسال برای استفاده از این قابلیت بیشتر بخوانید.

اجرای یکپارچه سازی سمت سرور برای ارسال پیام وضعیت موضوع

  1. به کد سرور برگردید، به FcmSender.java بروید و روشی به نام sendMessageToFcmTopicCondition را پیدا کنید.

3719a86c274522cf.png

  1. در خط اول، برای متغیر topicCondition ، شرط موضوعی را که می خواهید پیام را به آن ارسال کنید، ارائه دهید. می‌توانید آن را روی: 'Technology' in topics && 'Automotive' in topics تنظیم کنید.
  2. در خطوط بعدی، یک شیء message جدید (مشابه آنچه در تابع sendMessageToFcmTopic تعریف شده است) ایجاد کنید.
    1. تفاوت این است که به جای تنظیم فیلد 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();
  1. اکنون برای ارسال پیام، تماس را به نمونه FirebaseMessaging اضافه کنید (همانند تماس ارسالی که در تابع sendMessageToFcmTopic انجام شده است).
FirebaseMessaging.getInstance().send(message);
  1. در نهایت، تابع main را به روز کنید و تماس را فقط برای تابع sendMessageToFcmTopicCondition فعال کنید.

db9588d40d2a0da6.png

پیام ارسال کنید و رسید را تایید کنید

  1. قبل از ارسال پیام موضوع، ابتدا مطمئن شوید که نمونه برنامه شما شرایط موضوع مشخص شده را با اشتراک نمونه برنامه در هر دو موضوع فناوری و خودرو، برآورده می کند.
  2. اکنون می توانید پیام موضوع خود را با اجرای تابع main FcmSender.java ارسال کنید.
  3. مانند قبل، باید بتوانید دریافت پیام را در نمونه برنامه مشاهده کنید.
    1. نمونه برنامه در پیش زمینه
    6f612ace15aa6515.png
    1. نمونه برنامه در پس زمینه
    78044a56ac2359cb.png
  4. پاداش: اکنون می توانید اشتراک موضوع فناوری را لغو کنید و پیام وضعیت موضوع را دوباره ارسال کنید. باید توجه داشته باشید که پیام توسط نمونه برنامه دریافت نمی شود.

9. خلاصه کنید

بیایید خلاصه‌ای سریع از آنچه تا این لحظه یاد گرفته‌اید، انجام دهیم.

  • نحوه شروع اشتراک موضوع / لغو اشتراک از یک نمونه برنامه.
  • ارسال پیام به موضوع و تأیید رسید در نمونه‌های برنامه مشترک.
  • ارسال پیام به یک موضوع شرایط و تأیید رسید در یک نمونه برنامه که شرایط را برآورده می کند.

در بخش بعدی، با نحوه اشتراک/لغو اشتراک نمونه های برنامه در موضوعات بدون نیاز به برقراری تماس از سمت مشتری آشنا خواهید شد.

c0dc20655d392690.gif

10. اشتراک های موضوع را از سمت سرور مدیریت کنید

تاکنون، در این لبه کد، تمام تماس‌های اشتراک موضوع و لغو اشتراک از یک نمونه برنامه آغاز می‌شود.

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

در این بخش، نحوه استفاده از Firebase Admin SDK را برای اشتراک و لغو اشتراک دسته ای از توکن های ثبت FCM در یک موضوع با برقراری تماس از سمت سرور، یاد خواهید گرفت.

اشتراک سمت سرور رمزهای ثبت FCM را در موضوع FCM پیاده سازی کنید

  1. در کد سرور، به کلاس FcmSubscriptionManager.java بروید. روشی به نام subscribeFcmRegistrationTokensToTopic را پیدا کنید. شما فراخوان subscribeToTopic API را در اینجا اجرا خواهید کرد.

5d5709e7b3cbcb04.png

  1. بیایید نمونه برنامه را در موضوع انرژی مشترک کنیم. برای انجام این کار، ابتدا داده های دو فیلد زیر را ارائه دهید:
    1. registrationTokens : فهرستی از رشته‌هایی که با کاما از هم جدا شده‌اند که نشان‌دهنده نشانه‌های ثبت FCM است که می‌خواهید برای آنها اشتراک موضوعی ایجاد کنید.
    2. topicName : نام موضوع برای موضوع انرژی، به عنوان مثال /topics/Energy .
  2. در چند خط بعدی فراخوانی را در امتداد این خطوط اجرا کنید:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. شما می توانید TopicManagementResponse برای برخی از آمار نتایج سطح بالا بررسی کنید. مانند چاپ تعداد اشتراک‌های موضوعی که با موفقیت ایجاد شده‌اند با استفاده از getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. در نهایت، در تابع main فقط تابع subscribeFcmRegistrationTokensToTopic را فعال کنید.

ایجاد اشتراک و ارسال پیام موضوع

  1. در این مرحله شما آماده ایجاد اشتراک موضوع و ارسال پیام به آن هستید.
  2. تابع main کلاس FcmSubscriptionManager.java را اجرا کنید. این یک اشتراک موضوع ایجاد می کند.
  3. اکنون، کدی را برای ارسال پیام تنظیم کنید. مشابه قبل،
    1. در FcmSender.java ، تابع sendMessageToFcmTopic را پیدا کنید.
    2. topicName را روی مبحث انرژی، یعنی /topics/Energy تنظیم کنید.
    3. یک شیء Message ایجاد کنید و آن را با استفاده از setTopic به موضوع مورد نظر هدف قرار دهید.
    4. در نهایت، روش main را به روز کنید تا فقط تابع sendMessageToFcmTopic را فعال کند.
  4. تابع main FcmSender.java را اجرا کنید. این پیام را به نمونه برنامه شما ارسال می کند و می توانید آن را به صورت زیر در برنامه خود مشاهده کنید.
    1. نمونه برنامه در پیش زمینه
    40ab6cf71e0e4116.png
    1. نمونه برنامه در پس زمینه
    8fba81037198209e.png

لغو اشتراک توکن‌های ثبت FCM در موضوع FCM را در سمت سرور اجرا کنید

  1. برای لغو اشتراک موضوع سمت سرور، از این unsubscribeFromTopic API استفاده کنید. کد مربوطه را به تابع unsubscribeFcmRegistrationTokensFromTopic کلاس FcmSubscriptionManager.java اضافه می کنید.

8d9e8ea9d34016bd.png

  1. پیاده سازی کد لغو اشتراک سمت سرور و تایید اثر آن با ارسال یک پیام موضوعی، به عنوان تمرین برای شما باقی مانده است.

11. تبریک می گویم

تبریک می‌گوییم که با موفقیت از موضوعات FCM برای ارسال پیام‌های چندپخشی به زیرگروه‌های نمونه برنامه‌تان استفاده کردید. این به ساده‌سازی توانایی شما برای دسترسی به موقع به کاربران با محتوای مرتبط کمک می‌کند.

947def3eb33b1e4a.gif

بعدش چی؟

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

اسناد مرجع