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

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

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

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

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

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

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

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

คุณสามารถใช้ข้อความข้อมูลได้เมื่อต้องการประมวลผลข้อความด้วยโค้ดแอปไคลเอ็นต์ของคุณเอง

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

คุณสามารถส่งข้อความแจ้งเตือนได้โดยใช้ Firebaseคอนโซล Firebase Admin SDK หรือ FCM HTTP v1 API คอนโซล Firebase มีการทดสอบ A/B ที่อิงตาม Analytics เพื่อช่วยคุณ ปรับแต่งและปรับปรุงข้อความแจ้งเตือน

หากต้องการส่งข้อความแจ้งเตือนโดยใช้ Firebase Admin SDK หรือ FCM HTTP v1 API ให้ตั้งค่าคีย์ notification ด้วยชุดตัวเลือกคีย์-ค่าที่กำหนดไว้ล่วงหน้า ของข้อความแจ้งเตือน คุณสามารถใช้ตัวอย่างต่อไปนี้เพื่อจัดรูปแบบข้อความแจ้งเตือนในแอป IM

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

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

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

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

คุณเป็นผู้กำหนดวิธีใช้ data เพย์โหลด FCM เพื่อใช้รูปแบบการเข้ารหัสที่ต้องการ ตรวจสอบว่าคุณไม่ได้ใช้คำที่สงวนไว้ในคู่คีย์-ค่าที่กำหนดเอง คำที่สงวนไว้ ได้แก่ from, message_type หรือ คำใดก็ตามที่ขึ้นต้นด้วย google., gcm. หรือ gcm.notification.

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

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

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

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

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

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

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

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