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

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

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

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

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

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

ข้อความเกี่ยวกับอินเทอร์เน็ต

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

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

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

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

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

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

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

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

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

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

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

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

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

ทั้งโปรโตคอล HTTP ของ Firebase Admin SDK และ 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 จะไม่จำกัดปริมาณข้อความแบบยุบได้สำหรับข้อความที่มีค่าการคงอยู่ 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 จะจัดเก็บข้อความที่มีลําดับความสําคัญต่ำไว้จนกว่าอุปกรณ์จะออกจากโหมดสลีป ด้วยเหตุนี้ FLAG collapse_key จึงมีบทบาทสำคัญ หากมีข้อความที่มีคีย์การยุบ (และโทเค็นการลงทะเบียน) เดียวกันซึ่งจัดเก็บไว้แล้วและรอการส่ง ระบบจะทิ้งข้อความเก่าและแทนที่ด้วยข้อความใหม่ (กล่าวคือ ข้อความใหม่จะยุบข้อความเก่า) อย่างไรก็ตาม หากไม่ได้ตั้งค่าคีย์การยุบ ระบบจะจัดเก็บทั้งข้อความใหม่และข้อความเก่าไว้เพื่อนำส่งในอนาคต

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

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

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

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

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

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

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

การควบคุมการรับส่งข้อความขาลง

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

รูปแบบการเข้าชมที่เพิ่มขึ้นอย่างรวดเร็วอาจส่งผลให้เกิดข้อผิดพลาดเกี่ยวกับโควต้าที่เกิน ในกรณีที่ใช้โควต้าเกิน ระบบจะแสดงรหัสสถานะ 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

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

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

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

การควบคุมปริมาณข้อความแบบยุบได้

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

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

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

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

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

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

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

เราจำกัดข้อความขาขึ้นต่ออุปกรณ์ไว้ที่ 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 ดำเนินการหลายขั้นตอนเพื่อให้การเชื่อมต่อการรับส่งข้อความ Push จากโทรศัพท์ไปยังเซิร์ฟเวอร์มีความน่าเชื่อถือและพร้อมใช้งานบ่อยที่สุด การใช้ VPN ทำให้การดำเนินการนี้มีความซับซ้อน

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

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

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

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

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

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

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

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

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

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