เกี่ยวกับข้อความ 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 จะแสดงข้อมูลตามข้อมูลวิเคราะห์ การทดสอบ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ต่อไปนี้เป็นตัวอย่างของคำขอที่มี TTL:

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

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

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

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

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

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

โปรดทราบว่า

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การควบคุม Fanout

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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