ตั้งค่าและจัดการลำดับความสำคัญของข้อความ

คุณมี 2 ตัวเลือกในการกำหนดลำดับความสำคัญในการนำส่งข้อความดาวน์สตรีม ใน Android ดังนี้ ลำดับความสำคัญปกติและสูง การนำส่งข้อความที่มีลำดับความสำคัญปกติและสูงมีลักษณะดังนี้

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

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

การเลือกระหว่างข้อความที่มีลำดับความสำคัญสูงและปกติ

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

การประมวลผลข้อความสำหรับข้อความที่มีลำดับความสำคัญสูงและปกติ

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

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

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

การตั้งค่าลำดับความสำคัญสำหรับข้อความ

คุณสามารถส่งการแจ้งเตือนไปยังผู้ใช้ได้โดยใช้ Admin SDK, REST API ของ FCM และคอนโซล Firebase หากต้องการเปลี่ยนการตั้งค่าลำดับความสำคัญจาก Admin SDK และ FCM REST API คุณต้องอัปเดตเพย์โหลด JSON ของข้อความ คุณ ใช้โค้ดตัวอย่างต่อไปนี้เพื่อดูวิธีตั้งค่าลำดับความสำคัญเป็นสูงได้ สำหรับ การแจ้งเตือนที่ส่งจากคอนโซล ระบบไม่รองรับการตั้งค่าฟิลด์การแจ้งเตือนเฉพาะ Android

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

ทดสอบการแจ้งเตือนที่มีลำดับความสำคัญสูงในโหมดพักเครื่อง

หากต้องการให้แน่ใจว่าผู้ใช้จะได้รับการแจ้งเตือนที่มีลำดับความสำคัญสูงและระบบจะประมวลผลการแจ้งเตือนเหล่านั้นอย่างถูกต้อง เมื่อผู้ใช้ได้รับการแจ้งเตือน ให้ทำตามวิธีการต่อไปนี้เพื่อทดสอบการแจ้งเตือน

  1. ตั้งค่าอุปกรณ์เป็นโหมดพักโดยใช้คำสั่งในทดสอบแอปด้วยโหมดพัก
  2. เข้าถึงโทเค็นการลงทะเบียน FCM จากแอปในอุปกรณ์ทดสอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเข้าถึงโทเค็นได้ที่ส่งข้อความทดสอบ ไปยังแอปที่ทำงาน ในเบื้องหลัง
  3. เมื่อมีโทเค็น FCM แล้ว ให้ส่งการแจ้งเตือนที่มีลำดับความสำคัญสูงไปยังอุปกรณ์ทดสอบโดยใช้FCMโค้ดการส่งการแจ้งเตือนหรือคำสั่ง cURL%3B%0A%7D)-,cURL,-curl%20%2DX) ที่มีพารามิเตอร์การกำหนดค่าที่ตรงกับการแจ้งเตือนที่มีลำดับความสำคัญสูง

การลดความสำคัญของ FCM ที่มีลำดับความสำคัญสูงใน Android

ข้อความที่มีลำดับความสำคัญสูงใน Android มีไว้สำหรับเนื้อหาที่ผู้ใช้มองเห็นได้และต้องดำเนินการอย่างรวดเร็ว และควรส่งผลให้มีการแจ้งเตือนที่แสดงต่อผู้ใช้ หาก FCM ตรวจพบรูปแบบที่ข้อความไม่ส่งผลให้เกิดการแจ้งเตือนที่ผู้ใช้มองเห็น ระบบอาจลดลำดับความสำคัญของข้อความเป็นลำดับความสำคัญปกติหรือมอบหมาย ให้ Google Play Services จัดการ

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

การมอบสิทธิ์การแจ้งเตือนด้วยบริการ Google Play

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

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

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

การส่งต่อข้อความแจ้งเตือนด้วยวิธีนี้เป็นลักษณะการทำงานเริ่มต้นสำหรับแอป ที่ใช้ Android Q ขึ้นไปและบริการ Google Play เวอร์ชัน 19054000 ขึ้นไป ข้อความที่ส่งผ่าน HTTP v1 API จะได้รับการพร็อกซี แต่ข้อความที่ส่งผ่าน Firebase Console หรือ API เดิมจะไม่ได้รับการพร็อกซี โปรดทราบว่าฟีเจอร์นี้ยังอยู่ในเวอร์ชันเบต้าและอาจมีการเปลี่ยนแปลง

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

  • ในระดับแอป ให้เพิ่มคำสั่ง <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/> ในไฟล์ Manifest ของแอป
  • ในระดับอินสแตนซ์ของแอป: สำหรับอินสแตนซ์ของแอป ให้ตั้งค่า fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> ในโฟลว์ UI ของแอปตาม Use Case ที่เฉพาะเจาะจง
  • ในระดับข้อความ ให้ตั้งค่าคีย์ proxy เป็น DENY ในออบเจ็กต์ AndroidNotification สำหรับคำขอส่ง

การวัดผลการลดความสำคัญของข้อความใน Android

  • ข้อความส่วนบุคคล เมื่อนำส่ง คุณจะ ระบุได้ว่าข้อความแต่ละรายการถูกลดลำดับความสำคัญหรือไม่โดยการเปรียบเทียบ ลำดับความสำคัญที่นำส่งจาก getPriority() กับลำดับความสำคัญเดิม จาก getOriginalPriority()

  • ข้อความทั้งหมด FCM Aggregate Delivery Data API สามารถรายงานเปอร์เซ็นต์ของข้อความทั้งหมดที่ส่งไปยัง Android ที่ถูก ลดระดับความสำคัญ ระบบอาจละเว้นข้อความบางรายการจากรายงานข้อมูลรวม แต่โดยรวมแล้วรายงานควรแสดงภาพรวมของอัตราการลดความสำคัญของข้อความ ดูข้อมูลเพิ่มเติมและตัวอย่างโค้ดสำหรับการค้นหา API ได้ในบทความเกี่ยวกับข้อมูลการนำส่งที่รวบรวมแล้ว หรือจะดูจาก API Explorer ก็ได้

  • การแจ้งเตือนที่ผ่านพร็อกซี ระบบจะไม่นับการแจ้งเตือนที่พร็อกซีในเมตริกการนำส่ง FCM หรือ GA ปัจจุบัน ดังนั้น คุณอาจเห็นว่าเมตริกการนำส่งการแจ้งเตือนลดลงสูงสุด 15% หากต้องการรายงานข้อความที่พร็อกซี ให้ใช้ FCM Aggregate Delivery Data API ProxyNotificationInsightPercents รายงานเปอร์เซ็นต์ของการแจ้งเตือนที่พร็อกซีสำเร็จ รวมถึงรายละเอียดของข้อความที่พร็อกซีไม่สำเร็จ

การแก้ปัญหาการแจ้งเตือนล่าช้า

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

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

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