การแจ้งเตือนใน Android 13 ใช้รูปแบบการเลือกไม่ใช้ ซึ่งเป็นการเปลี่ยนแปลงจาก Android รุ่นก่อนหน้าซึ่งใช้รูปแบบการเลือกไม่ใช้ ใน Android 13 แอปทั้งหมดต้องขออนุญาตจากผู้ใช้ก่อนที่จะส่งการแจ้งเตือน โมเดลนี้ช่วยลดการหยุดชะงักของการแจ้งเตือน ลดการโอเวอร์โหลดของข้อมูล และช่วยให้ผู้ใช้ควบคุมได้ว่าจะให้การแจ้งเตือนใดปรากฏตามสิ่งที่สำคัญสำหรับตน เพื่อรองรับรูปแบบการเลือกใช้ OEM จะต้องดำเนินการเปลี่ยนแปลงในระบบการแจ้งเตือนและสิทธิ์รันไทม์
หน้านี้อธิบายถึงสิ่งที่ OEM ต้องนำไปใช้เพื่อรองรับการเปลี่ยนแปลงนี้และวิธีตรวจสอบการใช้งาน
ใช้การเปลี่ยนแปลงสำหรับการแจ้งเตือนการเลือกรับ
ตั้งแต่ Android 13 เป็นต้นไป แอปต้องประกาศความตั้งใจที่จะส่งการแจ้งเตือนโดยขอสิทธิ์รันไทม์ android.permission.POST_NOTIFICATION
จากระบบก่อนจึงจะสามารถส่งการแจ้งเตือนได้
ใน Android 13 ขึ้นไป การตั้งค่าที่กำหนดว่าแอปสามารถส่งการแจ้งเตือนไปยังผู้ใช้ได้หรือไม่นั้นจะถูกจัดเก็บไว้ในระบบการอนุญาต ก่อน Android 13 การตั้งค่านี้ถูกเก็บไว้ในระบบการแจ้งเตือน ดังนั้น OEM จะต้องย้ายข้อมูลการแจ้งเตือนที่มีอยู่ว่าแอปได้รับอนุญาตให้ส่งการแจ้งเตือนหรือไม่ จากระบบการแจ้งเตือนไปยังระบบอนุญาตรันไทม์ นอกจากนี้ OEM ยังต้องรักษา API ที่มีอยู่ในระบบการแจ้งเตือนที่แสดงข้อมูลนั้นแก่นักพัฒนาแอป
การเปลี่ยนแปลงระบบการแจ้งเตือนและการอนุญาตขึ้นอยู่กับ รูปแบบการเลือกรับของพฤติกรรมการแจ้งเตือนของผู้ใช้ และอธิบายไว้ในส่วน แนวทางปฏิบัติ
พฤติกรรมการแจ้งเตือนของผู้ใช้ในรูปแบบที่เลือกรับ
ตารางต่อไปนี้แสดงพฤติกรรมการแจ้งเตือนสำหรับแอปเวอร์ชันต่างๆ บนอุปกรณ์ที่ใช้ Android 13:
อุปกรณ์บน Android 13 | แอปที่กำหนดเป้าหมายเป็น Android 13 ขึ้นไป | แอปกำหนดเป้าหมายเป็นเวอร์ชันต่ำกว่า Android 13 |
---|---|---|
ติดตั้งใหม่ | การแจ้งเตือนจะถูกบล็อกจนกว่าแอปจะแจ้ง แอพควบคุมเวลาที่จะขออนุญาต | การแจ้งเตือนจะถูกบล็อกจนกว่าระบบปฏิบัติการจะแจ้ง มีการขออนุญาตในการเรียกใช้แอปครั้งแรก |
แอพที่มีอยู่ (อัพเกรด) | การแจ้งเตือนจะได้รับอนุญาตจนกว่าแอปจะแจ้ง ได้รับอนุญาตชั่วคราวจนกว่าแอปจะถามในการเรียกใช้ที่มีคุณสมบัติตามที่กำหนดครั้งแรก | การแจ้งเตือนจะได้รับอนุญาตจนกว่าจะได้รับแจ้งจากระบบปฏิบัติการ อนุญาตชั่วคราวจนกว่าจะมีการเรียกใช้แอปครั้งแรก |
แนวทางการดำเนินการ
สำหรับการใช้งานอ้างอิง โปรดดู บริการแจ้งเตือน บริการอนุญาต และ บริการนโยบาย หากต้องการใช้ข้อยกเว้นสำหรับตัวจัดการสิทธิ์เริ่มต้น โปรดดูที่ สิทธิ์รันไทม์
ระหว่างการใช้งาน ให้ใช้หลักเกณฑ์ต่อไปนี้เกี่ยวกับพฤติกรรมการแจ้งเตือนของผู้ใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 หรือ SDK ที่ต่ำกว่า:
- แอพที่ติดตั้งใหม่บนอุปกรณ์ Android 13 จะต้องไม่ส่งการแจ้งเตือนโดยที่ผู้ใช้ไม่ได้อนุมัติข้อความอนุญาต
- หากแอปมีเป้าหมายเป็นเวอร์ชัน Android 13 ขึ้นไป การแจ้งเตือนจะต้องถูกบล็อกจนกว่าแอปจะแจ้ง เนื่องจากแอปจะควบคุมเวลาและหากต้องขออนุญาตจากผู้ใช้
- หากแอปกำหนดเป้าหมายเวอร์ชันที่ต่ำกว่า Android 13 จะต้องบล็อกการแจ้งเตือนจนกว่าระบบปฏิบัติการจะแจ้ง ระบบปฏิบัติการต้องแสดงข้อความอนุญาตในการเรียกใช้แอปครั้งแรก
แอปใดๆ ที่มีอยู่ในอุปกรณ์ก่อนการอัปเกรดเป็น Android 13 หรือแอปใดๆ ที่ได้รับการคืนค่าผ่านการสำรองและกู้คืน จะต้องได้รับอนุญาตให้ส่งการแจ้งเตือนได้จนกว่าจะถึงครั้งแรกที่ผู้ใช้เปิดกิจกรรมจากแอปนั้น
สำหรับแอปที่กำหนดเป้าหมายเป็น SDK เวอร์ชัน Android 13 ขึ้นไป หากก่อนหน้านี้ผู้ใช้ไม่ได้ปรับแต่งการตั้งค่าการแจ้งเตือนสำหรับแอปนี้ที่ระดับแอปหรือ
NotificationChannel
เตือน ให้เพิกถอนการให้สิทธิ์ชั่วคราว จากนั้นแอพจะต้องขออนุญาตจากผู้ใช้ก่อนที่จะได้รับอนุญาตให้ส่งการแจ้งเตือนต่อไปหากแอปที่อัปเกรดซึ่งกำหนดเป้าหมายเป็น Android 13 ในขณะนี้ไม่มีสิทธิ์การแจ้งเตือนผ่านสิทธิ์การอัปเกรดชั่วคราว และผู้ใช้เปิดใช้งานอย่างน้อยหนึ่งครั้ง แอปจะต้องแสดงข้อความแจ้งสิทธิ์การแจ้งเตือนก่อนที่จะได้รับอนุญาตให้เรียกใช้บริการเบื้องหน้าเพิ่มเติม
สำหรับแอปที่มี SDK เป้าหมายเป็นเวอร์ชันต่ำกว่า Android 13 ให้สกัดกั้น การเปิดกิจกรรมแรกหลังจากที่แอปสร้างช่องแจ้งเตือนอย่างน้อยหนึ่ง
NotificationChannel
เพื่อแสดงข้อความอนุญาตโดยถามว่าผู้ใช้ต้องการรับการแจ้งเตือนจากแอปหรือไม่หากก่อนหน้านี้ผู้ใช้ปรับแต่งการตั้งค่าการแจ้งเตือนที่แอปหรือระดับ
NotificationChannel
สำหรับแอปบนอุปกรณ์ที่อัปเกรดหรือในข้อมูลสำรองที่กำลังกู้คืนไปยังอุปกรณ์ การตั้งค่าระดับแอปจะต้องถูกย้ายไปยังระบบการอนุญาตด้วยแฟล็กFLAG_PERMISSION_USER_SET
ผู้ใช้ต้องไม่แสดงข้อความแจ้งสิทธิ์การแจ้งเตือนเพิ่มเติมให้ผู้ใช้ทราบ เว้นแต่ว่าแอปจะขอให้เป็นเช่นนั้นโดยเฉพาะ
การสำรองและกู้คืนข้อมูลต้องรองรับการย้อนกลับและส่งต่อระหว่างอุปกรณ์ Android 13 และอุปกรณ์จากระบบปฏิบัติการเวอร์ชันก่อนหน้า ข้อมูลสำรองที่สร้างจากอุปกรณ์ Android 13 จะต้องกู้คืนไปยังระบบปฏิบัติการเวอร์ชันก่อนหน้า และข้อมูลสำรองจากระบบปฏิบัติการเวอร์ชันก่อนหน้าจะต้องกู้คืนไปยังอุปกรณ์ Android 13
การแจ้งเตือนสื่อที่เกี่ยวข้องกับการเล่นสื่ออย่างต่อเนื่องจะต้องได้รับการยกเว้นจากการอนุญาตการแจ้งเตือน
ตรวจสอบการเปลี่ยนแปลงระบบการแจ้งเตือนและการอนุญาต
ในการตรวจสอบการใช้งาน ให้รันการทดสอบต่อไปนี้:
การทดสอบหน่วยตามที่ระบุใน
PreferencesHelperTest
,NotificationManagerServiceTest
การทดสอบด้วยตนเองใดๆ ที่ทดสอบการอัปเกรด การสำรองและการคืนค่า
การทดสอบระบบอนุญาตและการแจ้งเตือนของ CTS ที่ส่งการแจ้งเตือน การทดสอบเหล่านี้บางส่วนอยู่ใน cts/tests/tests/permission/ , NotificationManagerTest.java และ cts/tests/tests/notificationlegacy/