Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการโทเค็นการลงทะเบียน 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 หรือไม่

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