Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

שליחת הודעות במעלה אנדרואיד

אם הסככה בשרת האפליקציה שלך את שרת XMPP חיבור בפרוטוקול, זה יכול לקבל הודעות upstream מההתקן של משתמש לענן. כדי ליזום הודעה במעלה הזרם, אפליקציית הלקוח שולחת בקשה המכילה את הדברים הבאים:

  • הכתובת של שרת האפליקציה המקבל במתכונת SENDER_ID@fcm.googleapis.com .
  • מזהה הודעה כי צריך להיות ייחודי לכל זיהוי השולח .
  • נתוני ההודעה הכוללים את זוגות ערך המפתח של מטען ההודעה.

כאשר הוא מקבל נתונים אלה, ה- FCM בונה בית XMPP לשליחתו לשרת האפליקציות, ומוסיף קצת מידע נוסף על המכשיר והאפליקציה הנשלחת.

שלח הודעה במעלה הזרם מאפליקציית לקוח אנדרואיד

אפליקציית אנדרואיד שלך יכולה לשלוח הודעה במעלה זרם באמצעות FirebaseMessaging.send :

ג'אווה

FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@fcm.googleapis.com")
        .setMessageId(Integer.toString(messageId))
        .addData("my_message", "Hello World")
        .addData("my_action","SAY_HELLO")
        .build());

קוטלין+KTX

val fm = Firebase.messaging
fm.send(remoteMessage("$SENDER_ID@fcm.googleapis.com") {
    setMessageId(messageId.toString())
    addData("my_message", "Hello World")
    addData("my_action", "SAY_HELLO")
})

התמודדות עם שיחות החזרה להודעות במעלה הזרם

עם FirebaseMessaging , אתה יכול ליישם את ליעדן onMessageSent ו onSendError כדי לבדוק את מצב ההודעות במעלה הזרם. במקרים שגיאים, onSendError מחזירה SendException עם קוד שגיאה. לדוגמה, אם ניסיונות הלקוח לשלוח הודעות יותר לאחר ממגבלת 20 ההודעה הגיעה, היא מחזירה SendException#ERROR_TOO_MANY_MESSAGES .

במקרים בהם המכשיר אינו מקוון או ששירות ה- FCM אינו זמין להעביר הודעות במעלה הזרם לשרת שלך, מופעי אפליקציית לקוח Android יכולים לצבור עד 20 הודעות בהמתנה. אם הודעות כאלה לפוג לפני FCM יכול לשלוח אותם בהצלחה, onSendError חוזר SendException#ERROR_TTL_EXCEEDED .

כדי שימוש ברשת אופטימיזציה, תגובות תצוותנה FCM כדי onMessageSent ו onSendError , כך ההכרה לא יכולה להיות מיידית עבור כול הודעה.

קבל הודעות XMPP בשרת האפליקציות

כאשר FCM מקבלת שיחת הודעות במעלה הזרם מאפליקציית לקוח, היא מייצרת את תקופת ה- XMPP הדרושה לשליחת ההודעה במעלה הזרם. FCM מוסיף את category ואת from השדות, ולאחר מכן שולח חרוז כמו הבאים לשרת את האפליקציה:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "category":"com.example.yourapp", // to know which app sent it
      "data":
      {
          "hello":"world",
      },
      "message_id":"m-123",
      "from":"REGID"
  }
  </gcm>
</message>

שולח הודעת ACK

בתגובה להודעה במעלה הזרם כמו האמור לעיל, שרת האפליקציות חייב להשתמש באותו חיבור כדי לשלוח הודעת ACK המכילה את מזהה ההודעה הייחודי. אם FCM לא מקבל ACK, הוא עשוי לנסות שוב לשלוח את ההודעה לשרת האפליקציות.

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

ראה הפניה שרת חיבור XMPP לקבלת מידע נוסף על תחביר הודעה במעלה הזרם.