การอนุญาตการแจ้งเตือนสำหรับการแจ้งเตือนการเลือกรับ

การแจ้งเตือนใน 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
ติดตั้งใหม่ การแจ้งเตือนจะถูกบล็อกจนกว่าแอปจะแจ้ง

แอพควบคุมเมื่อต้องขออนุญาต

การแจ้งเตือนจะถูกบล็อกจนกว่าระบบปฏิบัติการจะแจ้ง

มีการขออนุญาตเมื่อเรียกใช้แอปครั้งแรก

แอพที่มีอยู่ (อัปเกรด) อนุญาตให้มีการแจ้งเตือนจนกว่าแอปจะแจ้ง

ให้อนุญาตชั่วคราวจนกว่าแอปจะถามเมื่อมีคุณสมบัติตามที่กำหนดครั้งแรก

การแจ้งเตือนจะได้รับอนุญาตจนกว่าจะได้รับแจ้งจากระบบปฏิบัติการ

ได้รับอนุญาตชั่วคราวจนกว่าจะมีการเรียกใช้แอปครั้งแรก

แนวทางปฏิบัติ

สำหรับการดำเนินการอ้างอิง โปรดดู บริการแจ้งเตือน บริการอนุญาต และ บริการนโยบาย หากต้องการใช้ข้อยกเว้นสำหรับตัวจัดการสิทธิ์เริ่มต้น โปรดดูที่ Runtime Permissions

ระหว่างการใช้งาน ให้ใช้หลักเกณฑ์ต่อไปนี้เกี่ยวกับพฤติกรรมการแจ้งเตือนผู้ใช้สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 หรือ SDK ที่ต่ำกว่า

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

    • สำหรับแอปที่กำหนดเป้าหมาย SDK เวอร์ชัน Android 13 ขึ้นไป หากผู้ใช้ไม่เคยปรับแต่งการตั้งค่าการแจ้งเตือนสำหรับแอปนี้ในระดับแอ NotificationChannel เตือน ให้เพิกถอนการให้สิทธิ์ชั่วคราว จากนั้นแอพจะต้องขออนุญาตจากผู้ใช้ก่อนที่จะได้รับอนุญาตให้ส่งการแจ้งเตือนต่อไป

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

    • สำหรับแอปที่มี SDK เป้าหมายเป็นเวอร์ชันต่ำกว่า Android 13 ให้สกัดกั้น กิจกรรมแรกที่เปิดตัวหลังจากที่แอปสร้าง NotificationChannel อย่างน้อย 1 ช่องเพื่อแสดงข้อความแจ้งสิทธิ์เพื่อถามว่าผู้ใช้ต้องการรับการแจ้งเตือนจากแอปหรือไม่

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

  • การสำรองและกู้คืนข้อมูลต้องเข้ากันได้แบบย้อนหลังและส่งต่อระหว่างอุปกรณ์ Android 13 และอุปกรณ์จากระบบปฏิบัติการเวอร์ชันก่อนหน้า ข้อมูลสำรองที่สร้างจากอุปกรณ์ Android 13 จะต้องกู้คืนไปยังระบบปฏิบัติการเวอร์ชันก่อนหน้า และข้อมูลสำรองจากระบบปฏิบัติการเวอร์ชันก่อนหน้าจะต้องกู้คืนไปยังอุปกรณ์ Android 13

  • การแจ้งเตือนสื่อที่เกี่ยวข้องกับการเล่นสื่อที่กำลังดำเนินอยู่จะต้องได้รับการยกเว้นจากการอนุญาตการแจ้งเตือน

ตรวจสอบการเปลี่ยนแปลงระบบการแจ้งเตือนและการอนุญาต

เพื่อตรวจสอบการใช้งาน ให้รันการทดสอบต่อไปนี้:

  • การทดสอบหน่วยตามที่ระบุไว้ใน PreferencesHelperTest , NotificationManagerServiceTest

  • การทดสอบด้วยตนเองที่ทดสอบการอัปเกรด ตลอดจนการสำรองและกู้คืนข้อมูล

  • การทดสอบระบบการอนุญาตและการแจ้งเตือน CTS ใด ๆ ที่ส่งการแจ้งเตือน การทดสอบเหล่านี้บางส่วนอยู่ใน cts/tests/tests/permission/ , NotificationManagerTest.java และ cts/tests/tests/notificationlegacy/