คุณมี 2 ตัวเลือกในการกำหนดลำดับความสำคัญของการนำส่งข้อความดาวน์สตรีมใน Android ได้แก่ สำคัญปกติและสำคัญสูง การส่งข้อความที่มีลําดับความสําคัญปกติและสูงทํางานดังนี้
ความสำคัญปกติ นี่คือลําดับความสําคัญเริ่มต้นสําหรับข้อมูลและข้อความการแจ้งเตือน ระบบจะส่งข้อความที่มีลําดับความสําคัญปกติทันทีเมื่ออุปกรณ์ไม่ได้อยู่ในโหมดสลีป เมื่ออุปกรณ์อยู่ในโหมดสลีป การนำส่งอาจล่าช้าเพื่อประหยัดแบตเตอรี่จนกว่าอุปกรณ์จะออกจากโหมดสลีป สำหรับข้อความที่ไม่จําเป็นต้องส่งโดยเร็ว เช่น การแจ้งเตือนอีเมลใหม่ การรักษา UI ให้ซิงค์กัน หรือซิงค์ข้อมูลแอปในเบื้องหลัง ให้เลือกลําดับความสําคัญในการนำส่งแบบปกติ
สำคัญสูงFCM จะพยายามส่งข้อความที่มีลำดับความสำคัญสูงทันที ซึ่งจะช่วยให้ FCM ปลุกอุปกรณ์ที่กำลังหลับได้เมื่อจำเป็น และประมวลผลแบบจำกัดได้ (รวมถึงการเข้าถึงเครือข่ายแบบจำกัดมาก) โดยทั่วไปแล้ว ข้อความที่มีลำดับความสำคัญสูงควรส่งผลให้ผู้ใช้โต้ตอบกับแอปหรือการแจ้งเตือนของแอป
การเลือกระหว่างข้อความที่มีลำดับความสำคัญสูงและปกติ
แม้ว่าข้อความที่มีลําดับความสําคัญปกติจะเหมาะกับการอัปเดตทั่วไป แต่ให้เลือกลําดับความสําคัญสูงเมื่อคุณต้องการส่งข้อความทันทีสําหรับเรื่องเร่งด่วนหรือการดำเนินการ เนื่องจากเวลานำส่งข้อความที่มีลำดับความสำคัญปกติอาจได้รับผลกระทบจากโหมด "Doze" การตั้งค่าการแจ้งเตือนที่ผู้ใช้มองเห็นส่วนใหญ่ให้มีลำดับความสำคัญสูงจะช่วยให้มั่นใจได้ว่าข้อความเหล่านั้นจะได้รับการนําส่งทันที เช่น การแจ้งเตือนต่างๆ เช่น ข้อความแชท ปัญหาเกี่ยวกับบัญชี หรือการอัปเดตการนำส่งอาหาร ควรตั้งค่าเป็นลำดับความสำคัญสูง
การรับส่งข้อความสำหรับข้อความที่มีลำดับความสำคัญสูงและปกติ
สําหรับการแจ้งเตือนที่มีลําดับความสําคัญสูงและปกติที่ได้รับในอุปกรณ์ Android ระบบจะใช้เวลา 2-3 วินาทีเพื่อประมวลผลเพย์โหลดข้อความในตัวแฮนเดิล onMessageReceived
สําหรับการแจ้งเตือนที่ต้องมีการประมวลผลเพย์โหลดข้อความแบบอะซิงโครนัส เราขอแนะนําให้ใช้คอนสตรัคต์ เช่น WorkManager เนื่องจากอาจใช้เวลานานกว่าที่ระบุไว้สําหรับonMessageReceived
ตัวแฮนเดิล
สำหรับข้อความที่มีลำดับความสำคัญสูง คุณสามารถตั้งเวลางานด่วนโดยใช้ WorkManager ของ Android เพื่อให้แน่ใจว่าระบบจะจัดลำดับความสำคัญของการแจ้งเตือนเหล่านี้และทำงานจนเสร็จสมบูรณ์
สำหรับข้อความที่มีลำดับความสำคัญปกติ คุณสามารถกำหนดเวลาOneTimeWorkRequest ปกติได้โดยใช้ WorkManager ของ Android วิธีนี้จะช่วยให้มั่นใจได้ว่าระบบจะประมวลผลงานเพิ่มเติมที่จําเป็นโดยไม่ต้องใช้การประมวลผลแบบมีลําดับความสําคัญ
การตั้งค่าลำดับความสำคัญของข้อความ
คุณสามารถส่งการแจ้งเตือนไปยังผู้ใช้ได้โดยใช้ Admin SDK, FCM REST API และคอนโซล 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"
}
}
}
}
ทดสอบการแจ้งเตือนที่มีลำดับความสำคัญสูงในโหมดประหยัดพลังงาน
หากต้องการตรวจสอบว่าผู้ใช้ได้รับและระบบประมวลผลการแจ้งเตือนที่มีลำดับความสำคัญสูงอย่างถูกต้องหรือไม่ ให้ทำตามวิธีการต่อไปนี้เพื่อทดสอบการแจ้งเตือน
- ตั้งค่าอุปกรณ์เป็นโหมด Doze โดยใช้วิธีการในทดสอบแอปด้วยโหมด Doze
- เข้าถึงโทเค็นการลงทะเบียน FCM จากแอปในอุปกรณ์ทดสอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเข้าถึงโทเค็นได้ที่ส่งข้อความทดสอบไปยังแอปที่ทำงานอยู่เบื้องหลัง
- เมื่อคุณมีโทเค็น FCM แล้ว ให้ส่งการแจ้งเตือนที่มีลำดับความสำคัญสูงไปยังอุปกรณ์ทดสอบโดยใช้FCMโค้ดการส่งการแจ้งเตือนหรือคําสั่ง cURL%3B%0A%7D)-,cURL,-curl%20%2DX) ที่มีพารามิเตอร์การกําหนดค่าที่ตรงกับการแจ้งเตือนที่มีลําดับความสําคัญสูง
การจัดลําดับความสําคัญของ FCM ความสําคัญสูงใน Android ให้ลดลง
ข้อความที่มีลำดับความสำคัญสูงใน Android มีไว้สำหรับเนื้อหาที่มีความละเอียดอ่อนตามเวลาและแสดงต่อผู้ใช้ และควรส่งผลให้มีการแจ้งเตือนที่แสดงต่อผู้ใช้ หาก FCM ตรวจพบรูปแบบที่ข้อความไม่ส่งผลให้มีการแจ้งเตือนที่แสดงต่อผู้ใช้ ระบบอาจลดลำดับความสำคัญของข้อความเป็นสำคัญระดับปกติหรือมอบหมายให้บริการ Google Play จัดการ
FCM ใช้ข้อมูลพฤติกรรมของข้อความ 7 วันในการกำหนดว่าจะลดลำดับความสำคัญหรือใช้พร็อกซีข้อความหรือไม่ โดยระบบจะกำหนดนี้แยกกันสำหรับอินสแตนซ์แต่ละรายการของแอปพลิเคชัน หากการแจ้งเตือนแสดงในลักษณะที่ผู้ใช้มองเห็นเมื่อตอบสนองต่อข้อความที่มีลำดับความสำคัญสูง ข้อความที่มีลำดับความสำคัญสูงในอนาคตจะไม่ได้รับผลกระทบ
การมอบสิทธิ์การแจ้งเตือนด้วยบริการ Google Play
บริการ Google Play จะทำหน้าที่เป็นพร็อกซีสำหรับข้อความการแจ้งเตือนที่มีลำดับความสำคัญสูงซึ่งตรงตามเกณฑ์บางอย่างแทนที่จะลดลำดับความสำคัญ ซึ่งหมายความว่าบริการ Google Play จะแสดงการแจ้งเตือนในนามของแอปโดยไม่ต้องเริ่มแอป ทั้งนี้เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานโดยรวมที่ดีขึ้นบนอุปกรณ์ Android
โปรดทราบว่าข้อความการแจ้งเตือนที่รับผ่านพร็อกซีจะทำให้เกิดการเปลี่ยนแปลงในวิธีรายงานข้อมูลวิเคราะห์ที่เกี่ยวข้องกับข้อความที่ได้รับ ดังนี้
- แอปของคุณต้องใช้ FCM SDK เวอร์ชัน 24.0.0 ขึ้นไปจึงจะรายงานข้อมูลวิเคราะห์สำหรับการแจ้งเตือนผ่านพร็อกซีได้
- คุณอาจเห็นว่าข้อความที่ได้รับล่าช้าหรือลดลงเมื่อเทียบกับจำนวนก่อนเปิดตัวการแจ้งเตือนผ่านพร็อกซี เนื่องจากระบบจะรายงานข้อมูลวิเคราะห์สําหรับการแจ้งเตือนผ่านพร็อกซีเมื่อแอปเริ่มทํางานเท่านั้น และอาจไม่รายงานเลยหากการแจ้งเตือนไม่ได้ทําให้แอปเปิดขึ้น
การใช้พร็อกซีข้อความการแจ้งเตือนด้วยวิธีนี้เป็นลักษณะการทำงานเริ่มต้นสำหรับแอปที่ใช้ Android Q ขึ้นไปและบริการ Google Play เวอร์ชัน 19054000 ขึ้นไป ระบบจะใช้พร็อกซีกับข้อความที่ส่งผ่าน HTTP v1 API แต่จะไม่ใช้พร็อกซีกับข้อความที่ส่งผ่านคอนโซล Firebase หรือ 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 ก็ได้
การแจ้งเตือนที่ผ่านพร็อกซี ระบบจะไม่นับการแจ้งเตือนพร็อกซีในเมตริกการแสดงโฆษณา FCM หรือ GA ปัจจุบัน คุณจึงอาจเห็นว่าเมตริกการแสดงโฆษณาการแจ้งเตือนลดลงสูงสุด 15% สําหรับการรายงานเกี่ยวกับข้อความที่ส่งผ่านพร็อกซี ให้ใช้ FCM Aggregate Delivery Data API
ProxyNotificationInsightPercents
จะรายงานเปอร์เซ็นต์ของการแจ้งเตือนที่ส่งผ่านพร็อกซีสำเร็จ รวมถึงรายละเอียดของข้อความที่ส่งผ่านพร็อกซีไม่สำเร็จ
การแก้ปัญหาความล่าช้าในการแจ้งเตือน
ตรวจสอบว่าอินสแตนซ์แอปเปิดใช้การแจ้งเตือน หากผู้ใช้ปิดใช้สิทธิ์การแจ้งเตือนสำหรับแอปของคุณ ระบบจะไม่โพสต์การแจ้งเตือนใดๆ ของคุณ ส่งผลให้ข้อความของคุณไม่ได้รับการจัดลําดับความสําคัญ คุณควรตรวจสอบว่าได้เปิดใช้การแจ้งเตือนก่อนส่งข้อความที่มีลำดับความสำคัญสูงไปยังอินสแตนซ์แอปพลิเคชัน
หลีกเลี่ยงการเรียกใช้เครือข่ายเพิ่มเติมเมื่อประมวลผลการแจ้งเตือน เนื่องจากผู้ใช้อุปกรณ์เคลื่อนที่ Android บางส่วนใช้เครือข่ายที่มีเวลาในการตอบสนองสูง โปรดหลีกเลี่ยงการเปิดการเชื่อมต่อกับเซิร์ฟเวอร์ก่อนแสดงการแจ้งเตือน การเรียกกลับไปยังเซิร์ฟเวอร์ก่อนสิ้นสุดเวลาประมวลผลที่อนุญาตอาจเป็นความเสี่ยงสำหรับผู้ใช้ในเครือข่ายที่มีเวลาในการตอบสนองสูง
แต่ให้ใส่เนื้อหาการแจ้งเตือนในข้อความ FCM และแสดงทันที หากต้องการซิงค์เนื้อหาในแอปเพิ่มเติมใน Android คุณสามารถกำหนดเวลางานด้วย WorkManager เพื่อจัดการเนื้อหาดังกล่าวในเบื้องหลัง