เกี่ยวกับข้อความ FCM

Firebase Cloud Messaging (FCM) มีตัวเลือกการรับส่งข้อความที่หลากหลาย และความสามารถต่างๆ ข้อมูลในหน้านี้มีไว้เพื่อช่วยให้คุณเข้าใจFCMข้อความประเภทต่างๆ และสิ่งที่คุณทำได้กับข้อความเหล่านั้น

ประเภทข้อความ

FCM ช่วยให้คุณส่งข้อความ 2 ประเภทไปยังลูกค้าได้ ดังนี้

  • ข้อความแจ้งเตือน ซึ่งบางครั้งเรียกว่า "ข้อความที่แสดง" FCM SDK จะจัดการเรื่องนี้โดยอัตโนมัติ
  • ข้อความข้อมูลซึ่งแอปไคลเอ็นต์จัดการ

ข้อความแจ้งเตือนมีชุดคีย์ที่กำหนดไว้ล่วงหน้าซึ่งผู้ใช้มองเห็นได้ ในทางตรงกันข้าม ข้อความข้อมูลจะมีเฉพาะคู่คีย์-ค่าที่กำหนดเองซึ่งผู้ใช้กำหนด ข้อความการแจ้งเตือนอาจมีเพย์โหลดข้อมูล (ไม่บังคับ) เพย์โหลดสูงสุดสำหรับข้อความทั้ง 2 ประเภทคือ 4096 ไบต์ ยกเว้นเมื่อ ส่งข้อความจากคอนโซล Firebase ซึ่งจะบังคับใช้ขีดจำกัด 1,000 อักขระ

ใช้สถานการณ์ วิธีส่ง
ข้อความแจ้งเตือน FCM SDK จะแสดงข้อความในอุปกรณ์ของผู้ใช้ปลายทาง ในนามของแอปไคลเอ็นต์เมื่อทำงานในเบื้องหลัง ไม่เช่นนั้น หากแอปทำงานอยู่เบื้องหน้าเมื่อได้รับการแจ้งเตือน โค้ดของแอปจะเป็นตัวกำหนดลักษณะการทำงาน ข้อความแจ้งเตือนมีชุดคีย์ที่ผู้ใช้มองเห็นได้ซึ่งกำหนดไว้ล่วงหน้า และ เพย์โหลดข้อมูลที่เป็นคู่คีย์-ค่าที่กำหนดเอง (ไม่บังคับ)
  1. ในสภาพแวดล้อมที่เชื่อถือได้ เช่น Cloud Functions หรือเซิร์ฟเวอร์แอป ให้ใช้ Admin SDK หรือ HTTP v1 API ตั้งค่าคีย์ notification อาจมีเพย์โหลดข้อมูลที่ไม่บังคับ ย่อได้เสมอ

    ดูตัวอย่าง การแจ้งเตือนที่แสดงและส่งเพย์โหลดคำขอ

  2. ใช้ เครื่องมือแต่งการแจ้งเตือน: ป้อนข้อความ ชื่อ ฯลฯ แล้วส่ง เพิ่มเพย์โหลดข้อมูลที่ไม่บังคับโดยระบุข้อมูลที่กำหนดเอง
ข้อความข้อมูล แอปไคลเอ็นต์มีหน้าที่รับผิดชอบในการประมวลผลข้อความข้อมูล ข้อความข้อมูล มีเฉพาะคู่คีย์-ค่าที่กำหนดเองโดยไม่มีชื่อคีย์ที่สงวนไว้ (ดูด้านล่าง) ในสภาพแวดล้อมที่เชื่อถือได้ เช่น Cloud Functions หรือเซิร์ฟเวอร์แอป ให้ใช้ Admin SDK หรือ โปรโตคอลเซิร์ฟเวอร์ FCM ในคำขอส่ง ให้ตั้งค่าคีย์ data

ใช้ข้อความแจ้งเมื่อต้องการให้ FCM SDK จัดการการแสดง การแจ้งเตือนโดยอัตโนมัติเมื่อแอปทํางานในเบื้องหลัง ใช้ข้อความข้อมูลเมื่อต้องการประมวลผลข้อความด้วยโค้ดแอปไคลเอ็นต์ของคุณเอง

FCM สามารถส่งข้อความแจ้งเตือนซึ่งมีเพย์โหลดข้อมูลที่ไม่บังคับได้ ในกรณีดังกล่าว FCM จะจัดการการแสดงเพย์โหลดการแจ้งเตือน และแอปไคลเอ็นต์จะจัดการเพย์โหลดข้อมูล

ข้อความแจ้งเตือน

สำหรับการทดสอบหรือการตลาดและการดึงดูดผู้ใช้กลับ คุณสามารถส่ง ข้อความแจ้งเตือนโดยใช้Firebaseคอนโซล Firebase คอนโซลมีการทดสอบ A/B ที่อิงตามข้อมูลวิเคราะห์เพื่อช่วยคุณปรับแต่งและ ปรับปรุงข้อความทางการตลาด

หากต้องการส่งข้อความแจ้งโดยอัตโนมัติโดยใช้ Admin SDK หรือโปรโตคอล FCM ให้ตั้งค่าคีย์ notification ด้วยชุดตัวเลือกคีย์-ค่าที่กำหนดไว้ล่วงหน้าที่จำเป็นสำหรับส่วนที่ผู้ใช้มองเห็นได้ของข้อความแจ้ง ตัวอย่างเช่น นี่คือข้อความแจ้งเตือนในรูปแบบ JSON ในแอป IM ผู้ใช้จะเห็นข้อความที่มีชื่อว่า "โปรตุเกส vs เดนมาร์ก" และข้อความ "แมตช์สุดยอด!" ในอุปกรณ์

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

ระบบจะส่งข้อความแจ้งเตือนไปยังถาดการแจ้งเตือนเมื่อแอปอยู่เบื้องหลัง สำหรับแอปที่ทำงานอยู่เบื้องหน้า ฟังก์ชัน Callback จะจัดการข้อความ

ดูรายการคีย์ที่กำหนดไว้ล่วงหน้าทั้งหมดซึ่งพร้อมใช้งานสำหรับการสร้างข้อความแจ้งเตือนได้ในเอกสารอ้างอิงออบเจ็กต์การแจ้งเตือนโปรโตคอล HTTP v1

ข้อความข้อมูล

คุณเลือกได้ว่าจะใช้เพย์โหลด FCM data เพื่อใช้รูปแบบการเข้ารหัสที่คุณเลือกอย่างไร ตรวจสอบว่าคุณไม่ได้ใช้คำที่สงวนไว้ในคู่คีย์-ค่าที่กำหนดเอง คำที่สงวนไว้ ได้แก่ "from", "notification", "message_type" หรือคำใดก็ตามที่ขึ้นต้นด้วย "google" หรือ "gcm"

ตัวอย่างเช่น ข้อความในรูปแบบ JSON ต่อไปนี้อยู่ในแอป IM เดียวกันกับด้านบน โดยข้อมูลจะห่อหุ้มอยู่ในคีย์ data ทั่วไป และ คาดว่าแอปไคลเอ็นต์จะตีความเนื้อหาได้

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

ตัวอย่างข้างต้นแสดงการใช้งานฟิลด์ระดับบนสุดหรือฟิลด์dataทั่วไป ซึ่งไคลเอ็นต์จะตีความในทุกแพลตฟอร์มที่ได้รับข้อความ ในแต่ละแพลตฟอร์ม แอปไคลเอ็นต์จะได้รับเพย์โหลดข้อมูล ในฟังก์ชันการเรียกกลับ

ข้อความแจ้งเตือนที่มีเพย์โหลดข้อมูลที่ไม่บังคับ

คุณสามารถส่งข้อความแจ้งที่มีเพย์โหลดคู่คีย์-ค่าที่กำหนดเอง (ไม่บังคับ) ได้ทั้งแบบเป็นโปรแกรมหรือผ่านFirebaseคอนโซล ใน เครื่องมือสร้างการแจ้งเตือน ให้ใช้ช่องข้อมูลที่กำหนดเองในตัวเลือกขั้นสูง

ลักษณะการทำงานของแอปเมื่อได้รับข้อความที่มีทั้งการแจ้งเตือนและเพย์โหลดข้อมูล จะขึ้นอยู่กับว่าแอปอยู่ในเบื้องหลังหรือเบื้องหน้า กล่าวคือ ขึ้นอยู่กับว่าแอปทำงานอยู่หรือไม่ในขณะที่ได้รับข้อความ

  • เมื่ออยู่ใน เบื้องหลัง แอปจะได้รับเพย์โหลดการแจ้งเตือนใน ถาดการแจ้งเตือน และจะจัดการเพย์โหลดข้อมูลเฉพาะเมื่อผู้ใช้ แตะการแจ้งเตือน
  • เมื่ออยู่ในเบื้องหน้า แอปจะได้รับออบเจ็กต์ข้อความ ที่มีทั้งเพย์โหลด

นี่คือข้อความในรูปแบบ JSON ที่มีทั้งคีย์ notification และคีย์ data

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

การปรับแต่งข้อความในแพลตฟอร์มต่างๆ

ทั้ง Firebase Admin SDK และโปรโตคอล HTTP ของ FCM v1 อนุญาตให้คำขอข้อความของคุณตั้งค่าฟิลด์ทั้งหมดที่มีอยู่ในออบเจ็กต์ message ซึ่งรวมถึงเนื้อหาต่อไปนี้

  • ชุดฟิลด์ทั่วไปที่อินสแตนซ์ของแอปทั้งหมดที่ได้รับข้อความจะตีความ
  • ชุดฟิลด์เฉพาะแพลตฟอร์ม เช่น AndroidConfig และ WebpushConfig ซึ่งตีความโดยอินสแตนซ์ของแอปที่ทํางานบนแพลตฟอร์มที่ระบุเท่านั้น

การบล็อกเฉพาะแพลตฟอร์มช่วยให้คุณปรับแต่งข้อความสำหรับแพลตฟอร์มต่างๆ ได้อย่างยืดหยุ่นเพื่อให้มั่นใจว่าระบบจะจัดการข้อความอย่างถูกต้องเมื่อได้รับ แบ็กเอนด์ของ FCM จะพิจารณาทุกพารามิเตอร์ที่ระบุและปรับแต่ง ข้อความสำหรับแต่ละแพลตฟอร์ม

กรณีที่ควรใช้ฟิลด์ทั่วไป

ใช้ฟิลด์ทั่วไปเมื่อคุณทำสิ่งต่อไปนี้

  • กำหนดเป้าหมายอินสแตนซ์แอปในแพลตฟอร์มทั้งหมด ได้แก่ Apple, Android และเว็บ
  • การส่งข้อความไปยังหัวข้อ

อินสแตนซ์ของแอปทั้งหมดไม่ว่าจะเป็นแพลตฟอร์มใดก็ตามสามารถตีความฟิลด์ทั่วไปต่อไปนี้ ได้

กรณีที่ควรใช้ฟิลด์เฉพาะแพลตฟอร์ม

ใช้ช่องเฉพาะแพลตฟอร์มเมื่อต้องการทำสิ่งต่อไปนี้

  • ส่งฟิลด์ไปยังแพลตฟอร์มที่เฉพาะเจาะจงเท่านั้น
  • ส่งฟิลด์เฉพาะแพลตฟอร์มนอกเหนือจากฟิลด์ทั่วไป

เมื่อใดก็ตามที่คุณต้องการส่งค่าไปยังแพลตฟอร์มที่เฉพาะเจาะจงเท่านั้น อย่าใช้ ฟิลด์ทั่วไป ให้ใช้ฟิลด์เฉพาะแพลตฟอร์ม เช่น หากต้องการส่งการแจ้งเตือน ไปยังแพลตฟอร์ม Apple และเว็บเท่านั้น แต่ไม่ส่งไปยัง Android คุณต้องใช้ฟิลด์ 2 ชุดแยกกัน ชุดหนึ่งสำหรับ Apple และอีกชุดหนึ่งสำหรับเว็บ

เมื่อส่งข้อความที่มีตัวเลือกการนำส่งที่เฉพาะเจาะจง ให้ใช้ช่องเฉพาะแพลตฟอร์มเพื่อตั้งค่า คุณสามารถระบุค่าที่แตกต่างกันต่อแพลตฟอร์มได้หาก ต้องการ อย่างไรก็ตาม แม้ว่าคุณต้องการตั้งค่าที่เหมือนกันในทุกแพลตฟอร์ม คุณก็ต้องใช้ช่องที่เฉพาะเจาะจงสำหรับแพลตฟอร์มนั้นๆ เนื่องจากแต่ละแพลตฟอร์มอาจตีความค่าแตกต่างกันเล็กน้อย เช่น ใน Android ระบบจะตั้งค่า Time-To-Live เป็นเวลาหมดอายุในหน่วยวินาที ส่วนใน Apple ระบบจะตั้งค่าเป็นวันที่หมดอายุ

ตัวอย่าง: ข้อความแจ้งเตือนที่มีตัวเลือกการนำส่งเฉพาะแพลตฟอร์ม

คำขอส่ง v1 ต่อไปนี้จะส่งชื่อการแจ้งเตือนและเนื้อหาทั่วไปไปยังทุกแพลตฟอร์ม แต่ยังส่งการลบล้างเฉพาะแพลตฟอร์มบางรายการด้วย โดยคำขอต้องมีลักษณะดังนี้

  • ตั้งค่าเวลาในการใช้งาน (TTL) ที่ยาวนานสำหรับแพลตฟอร์ม Android และเว็บ ขณะเดียวกันก็ตั้งค่าลำดับความสำคัญของข้อความ APNs (แพลตฟอร์ม Apple) เป็นการตั้งค่าต่ำ
  • ตั้งค่าคีย์ที่เหมาะสมเพื่อกำหนดผลลัพธ์ของการแตะของผู้ใช้ในการแจ้งเตือนบน Android และ Apple ซึ่งก็คือ click_action และ category ตามลำดับ
{
  "message":{
     "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
     "notification":{
       "title":"Match update",
       "body":"Arsenal goal in added time, score is now 3-0"
     },
     "android":{
       "ttl":"86400s",
       "notification"{
         "click_action":"OPEN_ACTIVITY_1"
       }
     },
     "apns": {
       "headers": {
         "apns-priority": "5",
       },
       "payload": {
         "aps": {
           "category": "NEW_MESSAGE_CATEGORY"
         }
       }
     },
     "webpush":{
       "headers":{
         "TTL":"86400"
       }
     }
   }
 }

ดูรายละเอียดทั้งหมดเกี่ยวกับคีย์ที่ใช้ได้ในบล็อกเฉพาะแพลตฟอร์มในเนื้อหาของข้อความได้ที่เอกสารประกอบอ้างอิง HTTP v1 ดูข้อมูลเพิ่มเติมเกี่ยวกับ การสร้างคำขอส่งที่มีเนื้อหาของข้อความได้ที่ สร้างคำขอส่ง

ตัวเลือกการจัดส่ง

FCM มีชุดตัวเลือกการนำส่งที่เฉพาะเจาะจงสำหรับข้อความที่ส่งไปยัง อุปกรณ์ Android และอนุญาตให้ใช้ตัวเลือกที่คล้ายกันใน แพลตฟอร์ม Apple และเว็บ เช่น ลักษณะการทำงานของข้อความ "ยุบได้" รองรับใน Android ผ่าน FCM ของ collapse_key, ใน Apple ผ่าน apns-collapse-id และใน JavaScript/เว็บผ่าน Topic ดูรายละเอียดได้ที่คำอธิบายในส่วนนี้และเอกสารอ้างอิงที่เกี่ยวข้อง

การตั้งค่าลำดับความสำคัญของข้อความ

คุณมี 2 ตัวเลือกในการกำหนดลำดับความสำคัญในการนำส่งข้อความปลายทาง ได้แก่ ลำดับความสำคัญปกติและสูง แม้ว่าลักษณะการทำงานจะแตกต่างกันเล็กน้อยในแต่ละแพลตฟอร์ม แต่การนำส่งข้อความที่มีลำดับความสำคัญปกติและสูงจะมีลักษณะดังนี้

  • ความสำคัญปกติ ระบบจะส่งข้อความที่มีลำดับความสำคัญปกติทันทีเมื่อแอปอยู่เบื้องหน้า สำหรับแอปที่ทำงานในเบื้องหลัง การนำส่งอาจล่าช้า สำหรับข้อความที่ไม่ได้เร่งด่วน เช่น การแจ้งเตือนอีเมลใหม่ การซิงค์ UI หรือการซิงค์ข้อมูลแอปใน เบื้องหลัง ให้เลือกความสำคัญในการนำส่งเป็นปกติ

  • ลำดับความสำคัญสูง FCM พยายามส่งข้อความที่มีลำดับความสำคัญสูงทันทีแม้ว่าอุปกรณ์จะอยู่ในโหมดพักเครื่องก็ตาม ข้อความที่มีลำดับความสำคัญสูงใช้สำหรับเนื้อหาที่ผู้ใช้มองเห็นได้และต้องดำเนินการอย่างรวดเร็ว

ตัวอย่างข้อความที่มีลำดับความสำคัญปกติซึ่งส่งผ่านโปรโตคอล FCM HTTP v1 เพื่อแจ้งให้สมาชิกนิตยสาร ทราบว่ามีเนื้อหาใหม่พร้อมให้ดาวน์โหลด

{
  "message":{
    "topic":"subscriber-updates",
    "notification":{
      "body" : "This week's edition is now available.",
      "title" : "NewsMagazine.com",
    },
    "data" : {
      "volume" : "3.21.15",
      "contents" : "http://www.news-magazine.com/world-week/21659772"
    },
    "android":{
      "priority":"normal"
    },
    "apns":{
      "headers":{
        "apns-priority":"5"
      }
    },
    "webpush": {
      "headers": {
        "Urgency": "high"
      }
    }
  }
}

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าลำดับความสำคัญของข้อความสำหรับแพลตฟอร์มที่เฉพาะเจาะจงได้ที่

กรณีการใช้งานที่สำคัญต่อชีวิต

FCM API ไม่ได้ ออกแบบมาสำหรับการแจ้งเตือนฉุกเฉินหรือกิจกรรมที่มีความเสี่ยงสูงอื่นๆ ซึ่งการใช้หรือ ความล้มเหลวของ API อาจส่งผลให้เกิดการเสียชีวิต การบาดเจ็บส่วนบุคคล หรือความเสียหายต่อสิ่งแวดล้อม (เช่น การปฏิบัติการของหน่วยงานพลังงานนิวเคลียร์ การควบคุมจราจรทางอากาศ หรือ ระบบช่วยชีวิต) การใช้งานดังกล่าวเป็นสิ่งต้องห้ามอย่างชัดแจ้งภายใต้ส่วนที่ 4 ก. 7 ของข้อกำหนดในการให้บริการ คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการจัดการการปฏิบัติตามข้อกำหนดของแอป และความเสียหายใดๆ ที่เกิดจากการไม่ปฏิบัติตามข้อกำหนด Google ให้บริการ API "ตามที่เป็น" และขอสงวนสิทธิ์ในการปิดให้บริการ API หรือบางส่วน รวมถึงฟีเจอร์ต่างๆ หรือการเข้าถึงของคุณได้ทุกเมื่อไม่ว่าด้วยเหตุผลใดๆ โดยไม่มีความรับผิดหรือภาระหน้าที่อื่นๆ ต่อคุณหรือผู้ใช้ของคุณ

การกำหนดอายุการใช้งานของข้อความ

FCM มักจะส่งข้อความทันทีหลังจากที่ส่ง อย่างไรก็ตาม การดำเนินการนี้อาจทำไม่ได้เสมอไป เช่น หากแพลตฟอร์มเป็น Android อุปกรณ์อาจปิด ออฟไลน์ หรือไม่พร้อมใช้งาน หรือ FCM อาจตั้งใจหน่วงเวลาข้อความ เพื่อป้องกันไม่ให้แอปใช้ทรัพยากรมากเกินไปและส่งผลเสีย ต่ออายุการใช้งานแบตเตอรี่

ในกรณีนี้ FCM จะจัดเก็บข้อความและส่งข้อความทันทีที่ทำได้ แม้ว่าในกรณีส่วนใหญ่จะไม่มีปัญหา แต่ก็มีบางแอปที่ข้อความที่ส่งล่าช้าอาจไม่ได้รับการนำส่งเลย ตัวอย่างเช่น หากข้อความ เป็นการแจ้งเตือนสายเรียกเข้าหรือวิดีโอแชท ข้อความนี้จะมีประโยชน์เพียง ในช่วงเวลาสั้นๆ ก่อนที่การโทรจะสิ้นสุดลง หรือหากข้อความเป็นคำเชิญให้เข้าร่วมกิจกรรม ก็จะไม่มีประโยชน์หากได้รับหลังจากกิจกรรมสิ้นสุดลง

ใน Android และเว็บ/JavaScript คุณสามารถระบุอายุสูงสุดของข้อความได้ ค่าต้องเป็นระยะเวลาตั้งแต่ 0 ถึง 2,419,200 วินาที (28 วัน) และสอดคล้องกับระยะเวลาสูงสุดที่ FCM จัดเก็บและพยายามนำส่งข้อความ คำขอที่ไม่มีฟิลด์นี้จะใช้ระยะเวลาเริ่มต้นเป็น 4 สัปดาห์

ตัวอย่างการใช้งานฟีเจอร์นี้มีดังนี้

  • สายเรียกเข้าวิดีโอแชท
  • กิจกรรมคำเชิญที่กำลังจะหมดอายุ
  • กิจกรรมในปฏิทิน

ข้อดีอีกอย่างของการระบุอายุของข้อความคือ FCM จะไม่ใช้การควบคุมข้อความที่ยุบได้กับข้อความที่มีค่า Time-To-Live เป็น 0 วินาที FCM พยายามอย่างเต็มที่ในการจัดการข้อความที่ต้องส่ง "เดี๋ยวนี้หรือไม่มีวัน" โปรดทราบว่าค่า time_to_live 0 หมายความว่าระบบจะทิ้งข้อความที่นำส่งไม่ได้ทันที อย่างไรก็ตาม เนื่องจากระบบจะไม่จัดเก็บข้อความดังกล่าว จึงทำให้การส่งข้อความแจ้งเตือนมีเวลาในการตอบสนองที่ดีที่สุด

ตัวอย่างคำขอที่มี TTL มีดังนี้

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

อายุการใช้งานของข้อความ

เมื่อเซิร์ฟเวอร์แอปโพสต์ข้อความไปยัง FCM และได้รับรหัสข้อความ กลับมา ไม่ได้หมายความว่าระบบได้นำส่งข้อความไปยังอุปกรณ์ แล้ว แต่หมายความว่าได้รับการยอมรับให้แสดงโฆษณาแล้ว สิ่งที่จะเกิดขึ้นกับข้อความหลังจากได้รับการยอมรับแล้วนั้นขึ้นอยู่กับหลายปัจจัย

ในกรณีที่ดีที่สุด หากอุปกรณ์เชื่อมต่อกับ FCM หน้าจอเปิดอยู่และไม่มีข้อจำกัดในการควบคุมปริมาณ ข้อความจะ ส่งทันที

หากอุปกรณ์เชื่อมต่ออยู่แต่เข้าสู่โหมดพัก ระบบจะจัดเก็บข้อความที่มีลำดับความสำคัญต่ำ โดย FCM จนกว่าอุปกรณ์จะออกจากโหมดพัก และcollapse_keyแฟล็กจะมีบทบาทในกรณีที่ระบบจัดเก็บข้อความที่มีคีย์การยุบ (และโทเค็นการลงทะเบียน) เดียวกันอยู่แล้วและรอการนำส่ง ระบบจะทิ้งข้อความเก่าและใช้ข้อความใหม่แทน (กล่าวคือ ข้อความใหม่จะยุบข้อความเก่า) อย่างไรก็ตาม หากไม่ได้ตั้งค่าคีย์การยุบ ระบบจะจัดเก็บทั้งข้อความใหม่และข้อความเก่าเพื่อนำส่งในอนาคต

หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM ระบบจะจัดเก็บข้อความไว้จนกว่าจะมีการเชื่อมต่อ (โดยยังคงปฏิบัติตามกฎคีย์การยุบ) เมื่อสร้างการเชื่อมต่อแล้ว FCM จะส่งข้อความที่รอดำเนินการทั้งหมดไปยังอุปกรณ์ หากอุปกรณ์ไม่เชื่อมต่ออีกเลย (เช่น หากรีเซ็ตเป็นค่าเริ่มต้น) ข้อความจะหมดเวลาและ ถูกทิ้งจากFCMที่เก็บข้อมูล ระยะหมดเวลาเริ่มต้นคือ 4 สัปดาห์ เว้นแต่จะตั้งค่าtime_to_live

หากต้องการดูข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการนำส่งข้อความ ให้ทำดังนี้

    หากต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการนำส่งข้อความในแพลตฟอร์ม Android หรือ Apple โปรดดู FCMแดชบอร์ดการรายงาน ซึ่งบันทึก จำนวนข้อความที่ส่งและเปิดในอุปกรณ์ Apple และ Android พร้อมกับ ข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android

สำหรับอุปกรณ์ Android ที่เปิดใช้การรับส่งข้อความในช่องโดยตรง หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM นานกว่า 1 เดือน FCM จะยังคงรับข้อความแต่จะทิ้งข้อความทันที หากอุปกรณ์เชื่อมต่อภายใน 4 สัปดาห์นับจากข้อความข้อมูลสุดท้ายที่คุณส่งไปยังอุปกรณ์ ไคลเอ็นต์จะได้รับการเรียกกลับ onDeletedMessages() จากนั้นแอปจะจัดการสถานการณ์ได้อย่างเหมาะสม โดยปกติแล้วจะขอซิงค์แบบเต็มจากเซิร์ฟเวอร์แอป

สุดท้ายนี้ เมื่อ FCM พยายามส่งข้อความไปยังอุปกรณ์และ ถอนการติดตั้งแอป FCM จะทิ้งข้อความนั้นทันทีและ ทำให้โทเค็นการลงทะเบียนไม่ถูกต้อง การพยายามส่งข้อความไปยังอุปกรณ์ดังกล่าวในอนาคตจะทำให้เกิดข้อผิดพลาด NotRegistered

ข้อมูลเข้าสู่ระบบ

คุณอาจต้องใช้ข้อมูลเข้าสู่ระบบต่อไปนี้จากโปรเจ็กต์ Firebase ทั้งนี้ขึ้นอยู่กับFCMฟีเจอร์ที่คุณใช้งาน

รหัสโปรเจ็กต์ ตัวระบุที่ไม่ซ้ำกันสำหรับโปรเจ็กต์ Firebase ของคุณ ซึ่งใช้ในคำขอไปยังFCMปลายทาง HTTP v1 ค่านี้จะ อยู่ในแผง Firebase คอนโซลการตั้งค่า
โทเค็นการลงทะเบียน

สตริงโทเค็นที่ไม่ซ้ำกันซึ่งระบุอินสแตนซ์ของแอปไคลเอ็นต์แต่ละรายการ ต้องใช้โทเค็นการลงทะเบียนสำหรับการรับส่งข้อความในอุปกรณ์เครื่องเดียวและกลุ่มอุปกรณ์ โปรดทราบว่า ต้องเก็บโทเค็นการลงทะเบียนไว้เป็นความลับ

รหัสผู้ส่ง ค่าตัวเลขที่ไม่ซ้ำกันซึ่งสร้างขึ้นเมื่อคุณสร้างโปรเจ็กต์ Firebase โดยจะอยู่ในแท็บ Cloud Messaging ของคอนโซล Firebase แผงการตั้งค่า ระบบจะใช้รหัสผู้ส่งเพื่อระบุผู้ส่งแต่ละราย ที่ส่งข้อความไปยังแอปไคลเอ็นต์ได้
โทเค็นเพื่อการเข้าถึง โทเค็น OAuth 2.0 ที่มีอายุสั้นซึ่งให้สิทธิ์คำขอไปยัง HTTP v1 API โทเค็นนี้เชื่อมโยงกับบัญชีบริการที่เป็นของโปรเจ็กต์ Firebase ของคุณ หากต้องการสร้างและหมุนเวียนโทเค็นเพื่อการเข้าถึง ให้ทำตาม ขั้นตอนที่อธิบายไว้ใน ให้สิทธิ์คำขอส่ง