Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

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