คุณมี 2 ตัวเลือกในการกำหนดลำดับความสำคัญในการนำส่งข้อความดาวน์สตรีม ใน Android ดังนี้ ลำดับความสำคัญปกติและสูง การนำส่งข้อความที่มีลำดับความสำคัญปกติและสูงมีลักษณะดังนี้
ความสำคัญปกติ นี่คือลำดับความสำคัญเริ่มต้นสำหรับข้อความข้อมูลและการแจ้งเตือน ระบบจะส่งข้อความที่มีลำดับความสำคัญปกติทันทีเมื่ออุปกรณ์ไม่ได้อยู่ในโหมดสลีป เมื่ออุปกรณ์อยู่ในโหมดพัก การนำส่งอาจ ล่าช้าเพื่อประหยัดแบตเตอรี่จนกว่าอุปกรณ์จะออกจากโหมดพัก สำหรับข้อความที่ไม่ได้เร่งด่วน เช่น การแจ้งเตือนอีเมลใหม่ การซิงค์ UI หรือการซิงค์ข้อมูลแอปใน เบื้องหลัง ให้เลือกความสำคัญในการนำส่งเป็นปกติ
ลำดับความสำคัญสูงFCM พยายามส่งข้อความที่มีลำดับความสำคัญสูง ทันที ทำให้ FCM สามารถปลุกอุปกรณ์ที่อยู่ในโหมดสลีปเมื่อ จำเป็น และเรียกใช้การประมวลผลแบบจำกัดบางอย่าง (รวมถึงการเข้าถึงเครือข่ายแบบจำกัดมาก) โดยทั่วไปแล้ว ข้อความที่มีลำดับความสำคัญสูงควรส่งผลให้ผู้ใช้โต้ตอบ กับแอปหรือการแจ้งเตือนของแอป
การเลือกระหว่างข้อความที่มีลำดับความสำคัญสูงและปกติ
แม้ว่าข้อความที่มีลำดับความสำคัญปกติจะเหมาะสำหรับการอัปเดตทั่วไป แต่ให้เลือก "สูง" เมื่อคุณต้องการให้มั่นใจว่าข้อความจะนำส่งทันทีสำหรับเรื่องเร่งด่วนหรือ การดำเนินการ เนื่องจากเวลาในการนำส่งข้อความที่มีลำดับความสำคัญปกติอาจได้รับผลกระทบจาก โหมดพักเครื่อง การตั้งค่าการแจ้งเตือนส่วนใหญ่ที่ผู้ใช้มองเห็นเป็นลำดับความสำคัญสูงจะ ช่วยให้มั่นใจได้ว่าระบบจะนำส่งการแจ้งเตือนอย่างรวดเร็ว เช่น การแจ้งเตือนอย่างข้อความแชท ปัญหาเกี่ยวกับบัญชี หรือการอัปเดตการนำส่งอาหาร ควรตั้งค่าเป็น ลำดับความสำคัญสูง
การประมวลผลข้อความสำหรับข้อความที่มีลำดับความสำคัญสูงและปกติ
สำหรับข้อความที่มีลำดับความสำคัญสูงและลำดับความสำคัญปกติที่ได้รับในอุปกรณ์ Android
ระบบจะให้เวลาหลายวินาทีในการประมวลผลเพย์โหลดของข้อความในแฮนเดิลเลอร์ onMessageReceived
โดยจะจัดสรรเวลาสำหรับข้อความที่มีลำดับความสำคัญสูงมากกว่าข้อความที่มีลำดับความสำคัญปกติเล็กน้อย
โดยเวลาดังกล่าวคาดว่าจะนานพอ
ที่จะแสดงการแจ้งเตือนได้ทันที หากต้องดำเนินการเพิ่มเติม เช่น โหลดรูปภาพจากที่เก็บข้อมูลในอุปกรณ์หรือเรียกเซิร์ฟเวอร์เพื่อรวบรวมเนื้อหาเพิ่มเติม คุณจะต้องทำตามขั้นตอนเพิ่มเติม
ระบบจะเรียกใช้เมธอด onMessageReceived
ในเธรดของ Worker แยกต่างหาก แนวทางปฏิบัติแนะนำคือคุณควรประมวลผลเพย์โหลดของข้อความและแสดงการแจ้งเตือนทันทีภายในเมธอด onMessageReceived
คุณไม่ควรทำการเรียกเครือข่ายแบบอะซิงโครนัสเพิ่มเติมหรือประมวลผลเพย์โหลดในเธรดแยกภายในเมธอด onMessageReceived
การทำเช่นนี้อาจทำให้แอปพลิเคชันของคุณอยู่นอกวงจรการประมวลผลที่ถูกต้องก่อนที่จะประมวลผลเพย์โหลดจนเสร็จสมบูรณ์ หากเกิดกรณีนี้ คุณอาจเห็นว่าข้อความ FCM บางรายการที่ส่งทำให้การแจ้งเตือนล่าช้าหรือขาดหายไป
หากต้องการเวลาเพิ่มเติมในการประมวลผลข้อความ เช่น เพื่อดึงข้อมูลimageUrl
ที่อยู่ในเพย์โหลดของข้อความ คุณจะต้องใช้โครงสร้าง เช่น WorkManager
หรือบริการที่ทำงานอยู่เบื้องหน้าเพื่อขยายวงจรแอปพลิเคชัน คุณควรใช้คำแนะนำต่อไปนี้เมื่อลบล้างวิธีการ onMessageReceived
เพื่อยืนยันว่าระบบประมวลผลการแจ้งเตือนของคุณอย่างครบถ้วน
- สำหรับการแจ้งเตือนที่มีลำดับความสำคัญสูง: เริ่มงานที่เร่งด่วน
โดยใช้ Android
WorkManager
เพื่อยืนยันว่าการแจ้งเตือนที่มีลำดับความสำคัญสูง จะได้รับเวลาในการประมวลผลที่มีลำดับความสำคัญสูงเพื่อยืนยันว่าการแสดงผลการแจ้งเตือน จะทำงานจนเสร็จสมบูรณ์ ข่าวดีคือหากคุณกังวลเกี่ยวกับโควตางานที่เร่งด่วน การใช้จนหมด เนื่องจากการประมวลผล FCM ที่มีความสำคัญสูง คุณก็ไม่ต้องกังวล มีข้อยกเว้นสั้นๆ สำหรับงานเร่งด่วนที่กำหนดเวลาทันทีหลังจากส่ง FCMonMessageReceived
ที่มีลำดับความสำคัญสูง - สำหรับการแจ้งเตือนที่มีลำดับความสำคัญปกติ ให้เริ่ม
WorkRequest
ปกติโดยใช้WorkManager
ของ Android แทน ซึ่งจะช่วยยืนยันว่าระบบจะประมวลผลงานเพิ่มเติมที่จำเป็นต่อการประมวลผลการแจ้งเตือนของคุณในที่สุด โดยไม่ต้องใช้การประมวลผลที่มีลำดับความสำคัญและทำให้เกิดปัญหาการใช้งานแบตเตอรี่ที่ไม่จำเป็น
การตั้งค่าลำดับความสำคัญสำหรับข้อความ
คุณสามารถส่งการแจ้งเตือนไปยังผู้ใช้ได้โดยใช้ 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 ที่มีพารามิเตอร์การกำหนดค่าที่ตรงกับการแจ้งเตือนที่มีลำดับความสำคัญสูง
การลดความสำคัญของ 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 เพื่อจัดการในเบื้องหลังได้