יכול להיות שהאפליקציה תצטרך למשוך את תשומת הלב של המשתמש בדחיפות במצבים מסוימים, למשל אם יש התראה מתמשכת או שיחה נכנסת. באפליקציות שמטרגטות מכשירים עם 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>
אחרי שיש לכם את זה, אתם יכולים ליצור ערוץ התראות.
יצירת ערוץ התראות
כדי שההתראות יוצגו בצורה תקינה, וכדי שהמשתמש יוכל לנהל את ההתראות בהגדרות האפליקציה, צריך ליצור ערוץ התראות. מידע נוסף על ערוצי התראות זמין במאמר בנושא יצירה וניהול של ערוצי התראות.
יוצרים את ערוצי ההתראות בשיטה 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);