แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการโทเค็นการลงทะเบียน FCM

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

แนวทางปฏิบัติที่ดีที่สุดขั้นพื้นฐาน

มีแนวทางปฏิบัติพื้นฐานบางประการที่คุณควรปฏิบัติตามในแอปที่ใช้ FCM API เพื่อสร้างคำขอส่งโดยทางโปรแกรม แนวทางปฏิบัติที่ดีที่สุดหลักคือ:

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

ดึงและจัดเก็บโทเค็นการลงทะเบียน

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

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

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

  • แอพถูกกู้คืนในอุปกรณ์ใหม่
  • ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
  • ผู้ใช้ล้างข้อมูลแอป

ตรวจจับการตอบกลับโทเค็นที่ไม่ถูกต้องจากแบ็กเอนด์ FCM

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

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

ดู ErrorCodes สำหรับข้อมูลเพิ่มเติม

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

รับรองความสดของโทเค็นการลงทะเบียน

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

อัพเดทโทเค็นเป็นประจำ

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

  • เพิ่มตรรกะของแอปในแอปไคลเอ็นต์ของคุณเพื่อดึงโทเค็นปัจจุบันโดยใช้การเรียก API ที่เหมาะสม (เช่น token(completion): สำหรับแพลตฟอร์ม Apple หรือ getToken() สำหรับ Android) แล้วส่งโทเค็นปัจจุบันไปยังเซิร์ฟเวอร์แอปของคุณเพื่อจัดเก็บ (พร้อมการประทับเวลา ). นี่อาจเป็นงานรายเดือนที่กำหนดค่าให้ครอบคลุมลูกค้า/โทเค็นทั้งหมด
  • เพิ่มตรรกะของเซิร์ฟเวอร์เพื่ออัปเดตการประทับเวลาของโทเค็นตามช่วงเวลาปกติ ไม่ว่าโทเค็นจะมีการเปลี่ยนแปลงหรือไม่ก็ตาม

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

ยกเลิกการสมัครโทเค็นเก่าจากหัวข้อ

การจัดการการสมัครรับข้อมูลหัวข้อเพื่อลบโทเค็นการลงทะเบียนที่เก่าแล้วเป็นอีกข้อพิจารณา ประกอบด้วยสองขั้นตอน:

  1. แอปของคุณควรสมัครรับข้อมูลหัวข้อใหม่เดือนละครั้ง และ/หรือเมื่อใดก็ตามที่โทเค็นการลงทะเบียนมีการเปลี่ยนแปลง รูปแบบนี้เป็นโซลูชันการรักษาตัวเอง โดยการสมัครรับข้อมูลจะปรากฏขึ้นอีกครั้งโดยอัตโนมัติเมื่อแอปกลับมาใช้งานได้อีกครั้ง
  2. หากอินสแตนซ์ของแอปไม่ได้ใช้งานเป็นเวลา 2 เดือน (หรือช่วงหยุดทำงานของคุณเอง) คุณควรยกเลิกการสมัครใช้งานจากหัวข้อโดยใช้ Firebase Admin SDK เพื่อลบการแมปโทเค็น/หัวข้อออกจากแบ็กเอนด์ FCM

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

การวัดความสำเร็จในการจัดส่ง

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

ก่อนกำหนดเป้าหมายข้อความไปยังโทเค็น ให้พิจารณา:

  • Google Analytics, ข้อมูลที่บันทึกใน BigQuery หรือสัญญาณการติดตามอื่นๆ บ่งชี้ว่าโทเค็นทำงานอยู่หรือไม่
  • ความพยายามในการจัดส่งครั้งก่อนล้มเหลวอย่างสม่ำเสมอในช่วงระยะเวลาหนึ่งหรือไม่?
  • โทเค็นการลงทะเบียนได้รับการอัปเดตบนเซิร์ฟเวอร์ของคุณในช่วงสองเดือนที่ผ่านมาหรือไม่
  • สำหรับอุปกรณ์ Android FCM Data API รายงานความผิดพลาดในการส่งข้อความถึงเปอร์เซ็นต์ที่สูงเนื่องจาก droppedDeviceInactive หรือไม่

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดส่ง โปรดดูที่ การทำความเข้าใจการส่งข้อความ