יכול להיות שהאפליקציה תצטרך למשוך את תשומת הלב של המשתמש באופן דחוף במצבים מסוימים, למשל אם יש התראה פעילה או שיחה נכנסת. באפליקציות שמטרגטות מכשירים עם Android 9 (רמת API 28) או גרסאות ישנות יותר, אפשר להפעיל פעילות בזמן שהאפליקציה נמצאת ברקע. במסמך הזה נסביר איך ליצור ההתנהגות הזאת במכשירים עם Android 10 (רמת API 29) כדי Android 13 (רמת API 33).
הוספת ההרשאה POST_NOTIFICATIONS
החל מ-Android 13, מוסיפים את השורה הבאה לקובץ AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
לאחר מכן תוכלו ליצור ערוץ התראות.
יצירת ערוץ התראות
יוצרים ערוץ התראות כדי להציג את ההתראות כראוי ולאפשר ל- לנהל את ההתראות בהגדרות האפליקציה. מידע נוסף על ערוצי התראות זמין במאמר יצירה וניהול של ערוצי התראות.
יוצרים את ערוצי ההתראות ב-method onCreate
של הכיתה Application
:
Kotlin
class DACapp : 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, צריך לבקש הרשאות להצגת התראות לפני שמציגים אותן למשתמשים.
ההטמעה המינימלית נראית כך:
Kotlin
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, הקשה על הלחצן Request
permission
מפעילה את תיבת הדו-שיח שמוצגת באיור 2:

אם המשתמש יאשר את בקשת ההרשאה, הקטע פרטי האפליקציה של האפליקציה יוצג כמו איור 3:

יצירת התראה בעדיפות גבוהה
כשיוצרים את ההתראה, חשוב לכלול כותרת והודעה תיאוריים.
הדוגמה הבאה מכילה התראה:
Kotlin
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(666, notificationBuilder.build()) }
הצגת ההתראה למשתמש
קריאה לפונקציה showNotification()
מפעילה את ההתראה באופן הבא:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
ההתראה בדוגמה הזו נראית כמו איור 4:

התראה מתמשכת
כשהתראה מוצגת למשתמש, הוא יכול לאשר או לסגור אותה. לדוגמה, המשתמש יכול לאשר או לדחות שיחת טלפון נכנסת.
אם ההתראה היא התראה מתמשכת, כמו שיחה נכנסת, צריך לשייך אותה לשירות בחזית. קטע הקוד הבא בפורמט הזה מוסבר איך להציג התראה שמשויכת לשירות שפועל בחזית:
Kotlin
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Java
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);