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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VPN แต่ละประเภทจะมีวิธีการควบคุมที่แตกต่างกันว่าจะข้าม 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