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

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

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

เมื่อใช้ FCM คุณจะส่งข้อความ 2 ประเภทไปยังไคลเอ็นต์ได้ดังนี้

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

ข้อความแจ้งเตือนมีชุดคีย์ที่ผู้ใช้มองเห็นได้ซึ่งกำหนดไว้ล่วงหน้า ในทางตรงกันข้าม ข้อความข้อมูลจะมีเฉพาะคู่คีย์-ค่าที่กำหนดเองของผู้ใช้เท่านั้น ข้อความแจ้งเตือนอาจมีเพย์โหลด ข้อมูลที่ไม่บังคับได้ เพย์โหลดสูงสุดสำหรับข้อความทั้ง 2 ประเภทคือ 4, 096 ไบต์ ยกเว้นเมื่อส่งข้อความจากคอนโซล 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 ผู้ใช้จะเห็นข้อความที่มีชื่อว่า "โปรตุเกสปะทะเดนมาร์ก" และข้อความ "สุดยอด!" บนอุปกรณ์:

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

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

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

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

ตั้งค่าคีย์ที่เหมาะสมกับคู่คีย์-ค่าที่กำหนดเองเพื่อส่งเพย์โหลดข้อมูลไปยังแอปไคลเอ็นต์

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

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

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

การเข้ารหัสสำหรับข้อความข้อมูล

Android Transport Layer (ดูสถาปัตยกรรม FCM) ใช้การเข้ารหัสจากจุดต่อจุด คุณอาจตัดสินใจเพิ่มการเข้ารหัสจากต้นทางถึงปลายทางในข้อความข้อมูลได้ ทั้งนี้ขึ้นอยู่กับความต้องการ FCM ไม่มีโซลูชันแบบครบวงจร อย่างไรก็ตาม มีโซลูชันภายนอก เช่น Caplary หรือ DTLS

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

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

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

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

ต่อไปนี้เป็นข้อความรูปแบบ 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 และอีกชุดสำหรับเว็บ

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

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

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

  • ตั้งค่า Time to Live ที่ยาวนานสำหรับแพลตฟอร์ม Android และเว็บ ในขณะที่ตั้งค่าลำดับความสำคัญของข้อความ APN (แพลตฟอร์ม 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 ผ่าน collapse_key ของ FCM, ใน Apple ผ่าน apns-collapse-id และ JavaScript/เว็บผ่าน Topic สำหรับรายละเอียด โปรดดูคำอธิบายในส่วนนี้และเอกสารอ้างอิงที่เกี่ยวข้อง

ข้อความที่ยุบไม่ได้และยุบได้

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

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

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

ข้อความที่ยุบได้คือข้อความที่อาจแทนที่ด้วยข้อความใหม่หากยังไม่ได้ส่งไปยังอุปกรณ์

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

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

ข้อความของหัวข้อที่ไม่มีเพย์โหลดจะยุบได้โดยค่าเริ่มต้น ข้อความแจ้งเตือนจะยุบได้เสมอและจะไม่สนใจพารามิเตอร์ collapse_key

ฉันควรใช้รุ่นใด

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

สถานการณ์การใช้งาน วิธีส่ง
ยุบไม่ได้ ทุกข้อความมีความสำคัญต่อแอปไคลเอ็นต์และต้องมีการนำส่ง โดยค่าเริ่มต้น ข้อความทั้งหมดจะยุบไม่ได้ ยกเว้นข้อความแจ้งเตือน
พับได้ เมื่อมีข้อความที่ใหม่กว่าที่แสดงข้อความเก่าที่เกี่ยวข้องซึ่งไม่เกี่ยวข้องกับแอปไคลเอ็นต์ FCM จะแทนที่ข้อความเก่า ตัวอย่างเช่น ข้อความที่ใช้เริ่มการซิงค์ข้อมูลจากเซิร์ฟเวอร์ หรือข้อความแจ้งเตือนที่ล้าสมัย ตั้งค่าพารามิเตอร์ที่เหมาะสมในคำขอส่งข้อความ ดังนี้
  • collapseKey ใน Android
  • apns-collapse-id ใน Apple
  • Topic บนเว็บ
  • collapse_key ในโปรโตคอลเดิม (ทุกแพลตฟอร์ม)

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

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

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

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

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

{
  "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 จะส่งข้อความทันทีหลังจากส่ง อย่างไรก็ตาม วิธีนี้อาจไม่สามารถทำได้เสมอไป เช่น หากแพลตฟอร์มเป็น Android อุปกรณ์อาจปิดอยู่ ออฟไลน์ หรือไม่พร้อมใช้งาน หรือ FCM อาจตั้งใจเลื่อนข้อความ เพื่อป้องกันไม่ให้แอปใช้ทรัพยากรมากเกินไปและส่งผลเสียต่อระยะเวลาการใช้งานแบตเตอรี่

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

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

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

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

ข้อดีอีกอย่างหนึ่งของการระบุอายุการใช้งานของข้อความคือ FCM จะไม่ใช้การควบคุมข้อความที่ยุบได้กับข้อความที่มีค่าเวลาให้แสดงเป็น 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 หน้าจอเปิดอยู่และไม่มีข้อจำกัดการควบคุม ระบบจะส่งข้อความทันที

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

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

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

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

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

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

การควบคุมและโควต้า

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

การควบคุมข้อความปลายทาง

HTTP v1 API เริ่มใช้โควต้าแบบต่อโปรเจ็กต์ต่อนาทีสำหรับการรับส่งข้อความดาวน์สตรีม โควต้าเริ่มต้นของข้อความ 6 แสนข้อความต่อนาทีครอบคลุมนักพัฒนา FCM กว่า 99% ขณะเดียวกันก็ช่วยปกป้องความเสถียรของระบบและลดผลกระทบของโปรเจ็กต์ที่เพิ่มขึ้นอย่างรวดเร็ว

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

โปรดทราบว่า

  • โควต้าดาวน์สตรีมจะวัดข้อความ ไม่ใช่คำขอ
  • ระบบนับข้อผิดพลาดของไคลเอ็นต์ (รหัสสถานะ HTTP 400-499) (ยกเว้น 429)
  • โควต้าเป็นต่อนาที แต่นาทีเหล่านี้ไม่สอดคล้องกับนาฬิกา

โควต้าการตรวจสอบ

คุณสามารถดูโควต้า การใช้งาน และข้อผิดพลาดบน Google Cloud Console โดยทำดังนี้

  1. ไปที่คอนโซล Google Cloud
  2. เลือก API และบริการ
  3. เลือก Firebase Cloud Messaging API จากรายการตาราง
  4. เลือกขีดจำกัดของโควต้าและระบบ

หมายเหตุ: กราฟเหล่านี้ไม่สอดคล้องกับเวลาที่แน่นอนกับนาทีของโควต้า หมายความว่าอาจแสดง 429 เมื่อการเข้าชมต่ำกว่าโควต้า

การขอเพิ่มโควต้า

ก่อนขอเพิ่มโควต้า โปรดตรวจสอบสิ่งต่อไปนี้

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

หากมีคุณสมบัติตรงตามเกณฑ์เหล่านี้ คุณจะส่งคำขอเพิ่มโควต้าได้สูงสุด +25% และ FCM จะพยายามทำตามทุกความพยายามอย่างเต็มที่ (ไม่สามารถรับประกันการเพิ่มได้)

หากคุณต้องการโควต้าการรับส่งข้อความดาวน์สตรีมเพิ่มเติมเนื่องจากการเปิดตัวที่ใกล้เข้ามาหรือกิจกรรมชั่วคราว ให้ขอโควต้าล่วงหน้าอย่างน้อย 15 วันเพื่อให้มีเวลาเพียงพอในการจัดการคำขอ สำหรับคำขอขนาดใหญ่ (ข้อความมากกว่า 18 ล้านรายการต่อนาที) คุณต้องแจ้งเตือนล่วงหน้าอย่างน้อย 30 วัน การเปิดตัวและคำขอกิจกรรมพิเศษยังคงขึ้นอยู่กับ ข้อกำหนดของอัตราส่วนข้อผิดพลาดของไคลเอ็นต์และแนวทางปฏิบัติที่ดีที่สุด

โปรดดูคำถามที่พบบ่อยเกี่ยวกับโควต้า FCM

ขีดจำกัดข้อความหัวข้อ

อัตราการเพิ่ม/นำการสมัครรับหัวข้อออกจำกัดไว้ที่ 3,000 QPS ต่อโปรเจ็กต์

โปรดดูอัตราการส่งข้อความที่หัวข้อการควบคุมแฟนเอาต์

การควบคุม Fanout

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

การ Fanout ข้อความไม่เกิดขึ้นทันที ดังนั้นบางครั้งคุณจะมี Fanout หลายรายการที่กำลังดำเนินการอยู่พร้อมกัน เราจำกัดจำนวน Fanout ข้อความพร้อมกัน ต่อโปรเจ็กต์ไว้ที่ 1,000 ครั้ง หลังจากนั้น เราอาจปฏิเสธคำขอ Fanout เพิ่มเติมหรือเลื่อนการแฟนเอาต์คำขอออกไปจนกว่าแฟนเอาต์ที่อยู่ระหว่างดำเนินการจะเสร็จสมบูรณ์

อัตราการ Fanout จริงที่ทำได้จะขึ้นอยู่กับจำนวนโปรเจ็กต์ที่ขอ Fanout พร้อมกัน อัตราการ Fanout ที่ 10,000 QPS สำหรับแต่ละโปรเจ็กต์ไม่ใช่เรื่องแปลก แต่จำนวนนั้นไม่ได้เป็นการรับประกันและเป็นผลมาจากภาระงานทั้งหมดในระบบ โปรดทราบว่าความสามารถในการ Fanout ที่มีจะแบ่งออกเป็นโปรเจ็กต์ต่างๆ ไม่ใช่สำหรับคำขอ Fanout ดังนั้น หากโปรเจ็กต์ของคุณมี Fanout 2 รายการที่อยู่ระหว่างดำเนินการ Fanout แต่ละครั้งจะเห็นเพียงครึ่งหนึ่งของอัตราการ Fanout ที่ใช้ได้ วิธีที่แนะนำในการเพิ่มความเร็วของ Fanout ให้ได้สูงสุดคือการมี Fanout ที่ใช้งานอยู่ครั้งละ 1 รายการเท่านั้น

การควบคุมข้อความที่ยุบได้

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

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

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

เราจำกัดข้อความที่ยุบได้ 20 ข้อความต่อแอปต่ออุปกรณ์หนึ่งเครื่อง โดยเติม 1 ข้อความทุกๆ 3 นาที

การควบคุมเซิร์ฟเวอร์ XMPP

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

สำหรับการรับส่งข้อความอัปสตรีมด้วย XMPP FCM จะจำกัดข้อความอัปสตรีมไว้ที่ 1,500,000/นาทีต่อโปรเจ็กต์ เพื่อหลีกเลี่ยงไม่ให้เซิร์ฟเวอร์ปลายทางอัปสตรีมทำงานหนักเกินไป

เราจำกัดข้อความอัปสตรีมไว้ที่ 1,000/นาทีต่ออุปกรณ์ เพื่อป้องกันไม่ให้แอปทำงานโดยใช้แบตเตอรี่จนหมด

อัตราการส่งข้อความสูงสุดไปยังอุปกรณ์เครื่องเดียว

สำหรับ Android คุณสามารถส่งข้อความได้ถึง 240 ข้อความ/นาที และ 5,000 ข้อความ/ชั่วโมงไปยังอุปกรณ์ 1 เครื่อง เกณฑ์ที่สูงนี้มีไว้เพื่อรองรับการเข้าชมจำนวนมากในระยะสั้น เช่น เมื่อผู้ใช้โต้ตอบผ่านแชทอย่างรวดเร็ว ขีดจำกัดนี้จะป้องกันข้อผิดพลาดในการส่งตรรกะไม่ให้แบตเตอรี่ในอุปกรณ์หมดโดยไม่ตั้งใจ

สำหรับ iOS เราจะแสดงผลข้อผิดพลาดเมื่ออัตราเกินขีดจำกัดของ APN

พอร์ต FCM และไฟร์วอลล์ของคุณ

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

สำหรับอุปกรณ์ที่เชื่อมต่อในเครือข่าย FCM จะไม่แสดง IP ที่เจาะจงเนื่องจากช่วง IP ของเรามีการเปลี่ยนแปลงบ่อยเกินไปและกฎไฟร์วอลล์อาจล้าสมัย ซึ่งส่งผลต่อประสบการณ์ของผู้ใช้ หากจะให้ดี คุณควรใช้พอร์ต 5228-5230 และ 443 โดยไม่มีข้อจำกัด IP อย่างไรก็ตาม หากจำเป็นต้องจำกัด IP คุณควรเพิ่มที่อยู่ IP ทั้งหมดที่ระบุใน goog.json เป็นรายการที่อนุญาต รายการขนาดใหญ่นี้ได้รับการอัปเดตเป็นประจำ และเราขอแนะนำให้คุณอัปเดตกฎเป็นประจำทุกเดือน ปัญหาที่เกิดจากการจำกัด IP ของไฟร์วอลล์มักเกิดขึ้นเป็นบางครั้งและวินิจฉัยได้ยาก

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

พอร์ต TCP ที่จะเปิด:

  • 5228
  • 5229
  • 5230
  • 443

ชื่อโฮสต์ที่จะเปิด:

  • mtalk.google.com
  • mtalk4.google.com
  • mtalk-staging.google.com
  • mtalk-dev.google.com
  • alt1-mtalk.google.com
  • alt2-mtalk.google.com
  • alt3-mtalk.google.com
  • alt4-mtalk.google.com
  • alt5-mtalk.google.com
  • alt6-mtalk.google.com
  • alt7-mtalk.google.com
  • alt8-mtalk.google.com
  • android.apis.google.com
  • device-provisioning.googleapis.com
  • firebaseinstallations.googleapis.com

ไฟร์วอลล์การแปลที่อยู่เครือข่ายและ/หรือการตรวจสอบแพ็กเก็ตที่เก็บสถานะ:

หากเครือข่ายของคุณใช้ Network Address Translation (NAT) หรือ Stateful Packet Inspection (SPI) จะใช้เวลาหมดเวลาอย่างน้อย 30 นาทีสําหรับการเชื่อมต่อของเราผ่านพอร์ต 5228-5230 ซึ่งทำให้เราสามารถมอบการเชื่อมต่อ ที่เชื่อถือได้ขณะที่ลดการใช้แบตเตอรี่ของอุปกรณ์เคลื่อนที่ของผู้ใช้

การโต้ตอบกับ VPN และการข้ามได้

Firebase Cloud Messaging มีขั้นตอนดำเนินการหลายขั้นตอนเพื่อให้มั่นใจว่าการเชื่อมต่อการรับส่งข้อความแบบพุชจากโทรศัพท์ไปยังเซิร์ฟเวอร์มีความน่าเชื่อถือและพร้อมใช้งานบ่อยที่สุดเท่าที่จะทำได้ การใช้ VPN ทำให้การดำเนินการนี้ยุ่งยาก

VPN จะปกปิดข้อมูลที่จำเป็นที่ FCM ต้องใช้ในการปรับแต่งการเชื่อมต่อเพื่อเพิ่มความน่าเชื่อถือและอายุการใช้งานแบตเตอรี่สูงสุด ในบางกรณี VPN จะหยุดการเชื่อมต่อที่อยู่เป็นเวลานานไว้ ซึ่งทำให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดีเนื่องจากพลาดข้อความหรือความล่าช้า หรือแบตเตอรี่มีราคาสูง เมื่อกำหนดค่า VPN ให้อนุญาต เราจะข้าม VPN โดยใช้การเชื่อมต่อที่เข้ารหัส (ผ่านเครือข่าย Wi-Fi หรือ LTE) เพื่อดูแลให้ได้รับประสบการณ์การใช้งานที่น่าเชื่อถือและใช้แบตเตอรี่ การใช้งาน VPN ที่ข้ามได้ของ FCM เกิดเฉพาะกับช่องทางข้อความ Push ของ FCM การเข้าชม FCM อื่นๆ เช่น การรับส่งข้อมูลของการลงทะเบียน จะใช้ VPN หากทำงานอยู่ เมื่อการเชื่อมต่อ FCM ข้าม VPN จะทำให้ VPN เสียสิทธิประโยชน์เพิ่มเติมที่ VPN อาจมี เช่น การมาสก์ IP

VPN ต่างๆ จะมีวิธีการที่แตกต่างกันในการควบคุมว่าจะข้ามได้หรือไม่ โปรดดูวิธีการในเอกสารประกอบของ VPN ที่เฉพาะเจาะจงที่คุณใช้

หากไม่ได้กำหนดค่า VPN ให้ข้ามได้ Firebase Cloud Messaging จะใช้เครือข่าย VPN เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ ซึ่งอาจส่งผลให้ข้อความล่าช้าเป็นระยะเวลาหนึ่งและอาจทำให้ใช้แบตเตอรี่มากขึ้นเนื่องจาก Cloud Messaging จะพยายามรักษาการเชื่อมต่อผ่าน VPN

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

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

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

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

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

คีย์เซิร์ฟเวอร์ที่ให้สิทธิ์เซิร์ฟเวอร์แอปของคุณในการเข้าถึงบริการของ Google ซึ่งรวมถึงการส่งข้อความผ่านโปรโตคอลเดิมของ Firebase Cloud Messaging ที่เลิกใช้งาน

สำคัญ: อย่าใส่คีย์เซิร์ฟเวอร์ในโค้ดของไคลเอ็นต์ และโปรดใช้เฉพาะคีย์เซิร์ฟเวอร์เพื่อให้สิทธิ์เซิร์ฟเวอร์แอป FCM ปฏิเสธคีย์ Android, แพลตฟอร์ม Apple และคีย์เบราว์เซอร์