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

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

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

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

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

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

  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 ที่อิงตามข้อมูลวิเคราะห์เพื่อช่วยคุณ ปรับแต่งและปรับปรุงข้อความแจ้งเตือน

หากต้องการส่งข้อความแจ้งเตือนโดยใช้ 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 เพื่อดูรายการคีย์ที่กำหนดไว้ล่วงหน้าทั้งหมดที่ใช้สร้างข้อความแจ้งเตือนได้

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

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

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

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

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

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

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

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

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

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