แอปอาจต้องดึงดูดความสนใจของผู้ใช้อย่างเร่งด่วนในบางสถานการณ์ เช่น การปลุกที่กำลังดังหรือสายเรียกเข้า ในอุปกรณ์ที่ใช้ Android 9 (ระดับ API 28) หรือต่ำกว่า คุณอาจจัดการปัญหานี้ได้โดยการเปิดกิจกรรมขณะที่แอปทำงานในเบื้องหลัง เอกสารนี้แสดงวิธีทำให้เกิดลักษณะการทำงานนี้ในอุปกรณ์ที่ใช้ Android 10 (ระดับ API 29) (ระดับ API 29) ขึ้นไป
เพิ่มสิทธิ์ POST_NOTIFICATIONS
ตั้งแต่ Android 13 (API ระดับ 33) เป็นต้นไป ให้ประกาศสิทธิ์
POST_NOTIFICATIONS ในไฟล์ AndroidManifest.xml ดังนี้
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
หลังจากประกาศสิทธิ์แล้ว ให้สร้างช่องทางการแจ้งเตือน
สร้างช่องทางการแจ้งเตือน
สร้างช่องทางการแจ้งเตือนเพื่อแสดงการแจ้งเตือนและให้ผู้ใช้จัดการหมวดหมู่การแจ้งเตือนในการตั้งค่าระบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับ ช่องการแจ้งเตือนได้ที่สร้างและจัดการช่องการแจ้งเตือน
สร้างช่องทางการแจ้งเตือนในเมธอด onCreate ของคลาส
Application ดังนี้
class MyApplication : Application() { override fun onCreate() { super.onCreate() val channel = NotificationChannel( CHANNEL_ID, "High priority notifications", NotificationManager.IMPORTANCE_HIGH ) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
เมื่อผู้ใช้เรียกใช้แอปเป็นครั้งแรก ระบบจะแสดงแชแนลในหน้าจอข้อมูลแอป ดังที่แสดงในรูปที่ 1
จัดการสิทธิ์การแจ้งเตือน
ตั้งแต่ Android 13 เป็นต้นไป ให้ขอสิทธิ์การแจ้งเตือนก่อน แสดงการแจ้งเตือนต่อผู้ใช้
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีขอสิทธิ์การแจ้งเตือนรันไทม์ใน Jetpack Compose
val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission(), onResult = { hasNotificationPermission = it } ) // ... Button( onClick = { if (!hasNotificationPermission) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }, ) { Text(text = "Request permission") }
ในอุปกรณ์ที่ใช้ Android 13 ขึ้นไป การแตะปุ่มขอสิทธิ์จะแสดงกล่องโต้ตอบของระบบตามที่แสดงในรูปที่ 2
เมื่อผู้ใช้ให้สิทธิ์ ระบบจะอัปเดตหน้าจอข้อมูลแอป ดังที่แสดงในรูปที่ 3
สร้างการแจ้งเตือนที่มีลำดับความสำคัญสูง
เมื่อสร้างการแจ้งเตือนที่มีลำดับความสำคัญสูง ให้ระบุชื่อและข้อความที่ชัดเจน นอกจากนี้ ให้กำหนดช่องทางที่มีความสำคัญสูงและระดับลำดับความสำคัญด้วย
ตัวอย่างโค้ดต่อไปนี้จะกําหนดค่าและสร้างการแจ้งเตือนที่มีลําดับความสําคัญสูง
private fun showNotification() { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_auto_awesome_24) .setContentTitle("HIGH PRIORITY") .setContentText("Check this dog puppy video NOW!") .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION) notificationManager.notify(0, notificationBuilder.build()) }
แสดงการแจ้งเตือนต่อผู้ใช้
การเรียกใช้ฟังก์ชัน showNotification จะทริกเกอร์การแจ้งเตือนดังนี้
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
รูปที่ 4 แสดงการแจ้งเตือนที่มีลำดับความสำคัญสูงซึ่งระบบแสดง
การแจ้งเตือนต่อเนื่อง
เมื่อคุณแสดงการแจ้งเตือนต่อผู้ใช้ ผู้ใช้จะรับทราบหรือปิด การแจ้งเตือนหรือการช่วยเตือนของแอปได้ เช่น ผู้ใช้สามารถรับหรือปฏิเสธสายโทรศัพท์ขาเข้าได้
หากการแจ้งเตือนแสดงถึงงานเบื้องหลังที่กำลังดำเนินการอยู่ เช่น สายโทรศัพท์ที่ใช้งานอยู่ ให้เชื่อมโยงการแจ้งเตือนกับบริการที่ทำงานอยู่เบื้องหน้า ข้อมูลโค้ดต่อไปนี้แสดงวิธีแสดงการแจ้งเตือนที่เชื่อมโยงกับ บริการที่ทำงานอยู่เบื้องหน้า
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
พิจารณาใช้ข้อมูลอัปเดตแบบเรียลไทม์
การแจ้งเตือนที่ดำเนินการอยู่ซึ่งคำนึงถึงเวลาจะได้รับประโยชน์จากการมองเห็นที่เพิ่มขึ้น พิจารณาโปรโมตการแจ้งเตือนที่ดำเนินการอยู่เป็นข้อมูลอัปเดตแบบเรียลไทม์เพื่อแสดงข้อมูลสถานะ ในส่วนต่างๆ ของ UI ระบบ