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

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

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

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

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

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

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

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

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

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

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

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

สำหรับการทดสอบหรือการตลาดและการกลับมามีส่วนร่วมของผู้ใช้ คุณส่งข้อความแจ้งเตือนโดยใช้คอนโซล Firebase ได้ Firebase Console มีการทดสอบ 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 v1 ของ FCM v1 จะอนุญาตให้คำขอส่งข้อความตั้งค่าช่องทั้งหมดที่มีอยู่ในออบเจ็กต์ message ซึ่งรวมถึงเนื้อหาต่อไปนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ตั้งค่าการคงอยู่เป็นเวลานานสําหรับแพลตฟอร์ม 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 รายการพร้อมกันต่ออุปกรณ์ โดยแต่ละรายการจะมีคีย์การยุบที่แตกต่างกัน หากมีจำนวนมากกว่านี้ FCM จะเก็บคีย์การยุบไว้เพียง 4 รายการเท่านั้น โดยไม่มีการรับประกันว่าระบบจะเก็บคีย์ใดไว้

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

ฉันควรใช้รูปแบบใด

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

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

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

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

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

โปรดทราบว่า

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

สำหรับ 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

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

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

การโต้ตอบและความสามารถในการเลี่ยง VPN

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

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

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