คุณมี 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"
}
}
}
}
ทดสอบการแจ้งเตือนที่มีลำดับความสำคัญสูงในโหมดพักเครื่อง
หากต้องการให้แน่ใจว่าผู้ใช้จะได้รับการแจ้งเตือนที่มีลำดับความสำคัญสูงและระบบจะประมวลผลการแจ้งเตือนเหล่านั้นอย่างถูกต้อง เมื่อผู้ใช้ได้รับการแจ้งเตือน ให้ทำตามวิธีการต่อไปนี้เพื่อทดสอบการแจ้งเตือน
- ตั้งค่าอุปกรณ์เป็นโหมดพักโดยใช้คำสั่งในทดสอบแอปด้วยโหมดพัก
- เข้าถึงโทเค็นการลงทะเบียน FCM จากแอปในอุปกรณ์ทดสอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเข้าถึงโทเค็นได้ที่ส่งข้อความทดสอบ ไปยังแอปที่ทำงาน ในเบื้องหลัง
- เมื่อมีโทเค็น 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 เพื่อจัดการในเบื้องหลังได้