FCM โดยปกติจะส่งข้อความทันทีหลังจากที่ส่ง อย่างไรก็ตาม การดำเนินการนี้อาจทำไม่ได้เสมอไป เช่น อุปกรณ์อาจไม่พร้อมใช้งานหรือFCMอาจตั้งใจหน่วงเวลาข้อความ เพื่อป้องกันไม่ให้แอปใช้ทรัพยากรมากเกินไปและส่งผลเสีย ต่ออายุการใช้งานแบตเตอรี่
ในกรณีเช่นนี้ FCM จะจัดเก็บข้อความและส่งข้อความโดยเร็วที่สุด แม้ว่าในกรณีส่วนใหญ่จะไม่มีปัญหา แต่ก็มีบางแอปที่ต้องส่งการแจ้งเตือนโดยไม่ชักช้า เช่น การแจ้งเตือนสายเรียกเข้าหรือคำเชิญเข้าร่วมกิจกรรม
ใน Android และเว็บ คุณสามารถระบุอายุการใช้งานสูงสุดของข้อความได้ ค่าต้องเป็นระยะเวลาตั้งแต่ 0 ถึง 2,419,200 วินาที (28 วัน) และสอดคล้องกับระยะเวลาสูงสุดที่ FCM จัดเก็บและพยายามนำส่งข้อความ โดยค่าเริ่มต้น คำขอที่ไม่มีฟิลด์นี้จะมีระยะเวลาสูงสุด 4 สัปดาห์
ใน iOS คุณสามารถตั้งค่าส่วนหัว apns-expiration
ในออบเจ็กต์
ApnsConfig
ได้ ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบของ Apple เกี่ยวกับการส่งคำขอการแจ้งเตือนไปยัง APNs
ตัวอย่างการใช้งานฟีเจอร์นี้มีดังนี้
- สายเรียกเข้าวิดีโอแชท
- กิจกรรมคำเชิญที่กำลังจะหมดอายุ
- กิจกรรมในปฏิทิน
ข้อดีอีกอย่างของการระบุอายุของข้อความคือ FCM จะไม่ใช้การควบคุมข้อความที่ยุบได้กับข้อความที่มีค่าเวลาในการใช้งานเป็น 0 วินาที โปรดทราบว่าttl
ค่า 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 จนกว่าอุปกรณ์จะออกจากโหมดพักแอป หากตั้งค่า collapse_key
และมีข้อความที่มีอยู่ซึ่งมี collapse
key และโทเค็นการลงทะเบียนเดียวกันรอการนำส่ง ระบบจะทิ้งข้อความเก่าและแทนที่ด้วยข้อความใหม่ อย่างไรก็ตาม หากไม่ได้ตั้งค่าคีย์การยุบ ระบบจะจัดเก็บทั้งข้อความใหม่และข้อความเก่าเพื่อนำส่งในอนาคต
หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM ระบบจะจัดเก็บข้อความไว้จนกว่าจะมีการ
เชื่อมต่อ เมื่อสร้างการเชื่อมต่อแล้ว FCM
จะส่งข้อความที่รอดำเนินการทั้งหมดไปยังอุปกรณ์ หากอุปกรณ์ไม่เคยเชื่อมต่ออีกเลย ข้อความจะหมดเวลาและถูกทิ้งจากที่เก็บข้อมูลของ FCM ในที่สุด
ระยะหมดเวลาเริ่มต้นคือ 4 สัปดาห์ เว้นแต่จะตั้งค่าttl
หากมีการถอนการติดตั้งแอปเมื่อ FCM พยายามส่งข้อความไปยังอุปกรณ์ FCM จะทิ้งข้อความนั้นทันทีและทำให้โทเค็นการลงทะเบียนใช้ไม่ได้ การพยายามส่งข้อความไปยังอุปกรณ์ดังกล่าวในอนาคตจะทำให้เกิดข้อผิดพลาด NotRegistered
สำหรับอุปกรณ์ Android หากอุปกรณ์ไม่ได้เชื่อมต่อกับ FCM นานกว่า 1 เดือน FCM จะยังคงยอมรับข้อความแต่จะทิ้งข้อความทันที หากอุปกรณ์เชื่อมต่อภายใน 4 สัปดาห์หลังจากข้อความข้อมูลสุดท้ายที่คุณส่ง
ไปยังอุปกรณ์ แอปไคลเอ็นต์จะได้รับการเรียกกลับ
onDeletedMessages()
หากต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการนำส่งข้อความในแพลตฟอร์ม Android หรือ Apple คุณสามารถใช้แดชบอร์ดFCMการรายงาน ซึ่งจะบันทึกจำนวนข้อความที่ส่งและเปิดในอุปกรณ์ Apple และ Android พร้อมกับข้อมูลการแสดงผลสำหรับแอป Android