Notification Action — interaktiva knappar och inmatningsfält som visas direkt i push-aviseringen och låter användaren utföra en åtgärd utan att öppna appen. Detta är en nyckeldel av användarupplevelsen som förkortar vägen till målskärmen. Enligt Android Developers, 2025 ökar Notification Action användarengagemanget med upp till 40% genom att minska friktionen vid interaktion.
Huvudpunkter
Notification Action — är ett interaktivt gränssnittselement som läggs till i en push-avisering för att utföra en specifik åtgärd. Användaren kan svara på ett meddelande, bekräfta en uppgift eller öppna en specifik skärm utan att gå in i appen. Åtgärder visas som knappar under aviseringstexten eller i expanderad vy vid svepning.
Huvudmålet med Notification Action är att minska antalet steg som användaren behöver för att nå sitt mål. Istället för att öppna appen och navigera till önskad skärm klickar användaren på en enda knapp. Forskning visar att appar med interaktiva aviseringar har 25–40% högre engagemangsnivå jämfört med vanliga aviseringar.
På Android visas Notification Action som ikon-knappar i kompakt vy och som textknappar i expanderat läge. På iOS visas åtgärder vid lång tryckning på aviseringen eller vid svepning åt vänster. Varje plattform har sina egna rekommendationer för antalet åtgärder — Android rekommenderar högst 3, iOS högst 4.
| Plattform | Max. åtgärder | Visningssätt | Typer av åtgärder |
|---|---|---|---|
| Android | 3 | Ikoner + text | Knappar, textinmatning |
| iOS | 4 | Lång tryckning / svepning | Knappar, textinmatning |
På Android skapas Notification Action via NotificationCompat.Builder med metoden addAction(). Varje åtgärd innehåller en ikon, text och en PendingIntent som utlöses vid klick. Från och med Android 7.0 (API 24) stöds direkt textinmatning via RemoteInput.
För att skapa en knapp i en avisering måste en PendingIntent definieras som startas vid klick. PendingIntent kan öppna en Activity, starta en Service eller BroadcastReceiver. Åtgärdsikonen måste vara monokrom och följa Material Design.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Bekräftelseförfrågan")
.setContentText("Bekräfta utförandet av uppgiften")
.addAction(R.drawable.ic_accept, "Bekräfta", acceptPendingIntent)
.build()
För scenarier som kräver textinmatning (till exempel svar på ett meddelande) tillhandahåller Android RemoteInput. Användaren anger text direkt i aviseringen och appen tar emot den utan att öppna Activity. RemoteInput stöds på Android 7.0+ och kräver explicit hantering i BroadcastReceiver eller Service.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Ange svar")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Svara", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
När en åtgärd klickas startar systemet den angivna PendingIntent. För att hämta den inmatade texten från RemoteInput, anropa RemoteInput.getResultsFromIntent(intent). Det rekommenderas att hantera åtgärder i IntentService eller WorkManager för att inte blockera UI-tråden.
På iOS implementeras Notification Action via UserNotifications-ramverket. Utvecklaren skapar åtgärdskategorier (UNNotificationCategory) och registrerar dem vid appstart. Varje åtgärd definieras av ett UNNotificationAction-objekt med en unik identifierare.
För att lägga till åtgärder i push-aviseringar på iOS måste en kategori skapas som grupperar relaterade åtgärder. Kategorin anges i aviseringens nyttolast via fältet category. När aviseringen tas emot visar systemet tillgängliga åtgärder från den angivna kategorin.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Bekräfta",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Avvisa",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
När användaren klickar på en åtgärd anropar systemet metoden userNotificationCenter:didReceiveNotificationResponse i delegaten för UNUserNotificationCenter. response.actionIdentifier innehåller identifieraren för den utförda åtgärden. För textinmatning används UNTextInputNotificationAction som tillhandahåller texten som användaren har angett.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action klassificeras efter interaktionstyp och användningsscenario. Rätt val av åtgärdstyp påverkar direkt användarupplevelsen och konverteringen till målåtgärden.
Den vanligaste typen — en knapp som öppnar appen på en specifik skärm. På Android används PendingIntent.getActivity(), på iOS — alternativet .foreground för UNNotificationAction. Tillämpas för åtgärder som kräver fullständigt gränssnitt, till exempel visning av orderdetaljer.
Åtgärder som utförs utan att öppna appen. På Android används PendingIntent.getBroadcast() eller PendingIntent.getService(). På iOS — alternativet .authenticationRequired eller utan .foreground. Exempel: markera en uppgift som slutförd, gilla ett inlägg, lägg till i favoriter.
Låter användaren ange text direkt i aviseringen. På Android implementeras via RemoteInput, på iOS via UNTextInputNotificationAction. Används för svar på meddelanden, kommentarer, inmatning av engångsbekräftelsekoder.
Åtgärder som oåterkalleligen ändrar data — borttagning, avvisning, blockering. På Android markeras de visuellt (röd färg i vissa system), på iOS kräver de alternativet .destructive. Det rekommenderas att begära bekräftelse för destruktiva åtgärder, till exempel via en extra dialogruta eller ett andra klick.
En separat klass av åtgärder — textinmatning direkt från aviseringen. På Android implementeras via RemoteInput i kombination med PendingIntent. På iOS används UNTextInputNotificationAction som ärver från UNNotificationAction. Sådana åtgärder används för snabba svar i meddelandeprogram, inmatning av kampanjkoder, ifyllning av feedbackformulär eller utvärdering av servicekvalitet. Den inmatade texten skickas till appen tillsammans med åtgärdsidentifieraren. För korrekt hantering av textinmatning på båda plattformarna måste tolkning av inmatade data och validering implementeras innan målåtgärden utförs.
Korrekt hantering av Notification Action är avgörande för analys och användarupplevelse. Varje klick måste loggas och åtgärden måste utföras tillförlitligt, även om appen var stängd.
Spåra varje klick på Notification Action via analyssystemet. Firebase Analytics, Mixpanel eller Yandex.Metrica gör det möjligt att registrera åtgärdsidentifieraren, klicktiden och aviseringskontexten. Dessa data hjälper till att optimera aviseringsstrategin och öka engagemanget. A/B-testning med olika åtgärdsuppsättningar hjälper till att bestämma de mest effektiva interaktionsscenarierna med användaren.
Om appen är stängd skickar systemet ändå Intent eller UNNotificationResponse vid klick på en åtgärd. På Android använder du BroadcastReceiver för garanterad hantering. På iOS startar systemet appen i bakgrunden och skickar svaret till delegaten. För kritiska åtgärder (betalningsbekräftelse, auktorisering) lägger du till en mekanism för återförsök och ett meddelande till användaren om lyckad utförande.
Från och med Android 7.0 kan utvecklaren påverka visningen av Notification Action via ikoner och färger. Ikoner måste vara monokroma (alfakanal), med storleken 24x24 dp. På iOS är anpassningen av knappar begränsad — systemfärger och teckensnitt används. Material Design rekommenderar att gruppera åtgärder efter prioritet: den viktigaste åtgärden först, destruktiva sist.
Vanliga frågor
På Android rekommenderas högst 3 åtgärder, på iOS upp till 4. Att överskrida gränsen leder till att vissa åtgärder inte visas eller göms i undermenyn.
Ikonen skickas till NotificationCompat.Action.Builder som en drawable-resurs. Ikonen måste vara monokrom (alfakanal), med storleken 24x24 dp och följa Material Designs riktlinjer.
Ja, om aviseringen visas på låst skärm och visibility-flaggan är inställd på VISIBILITY_PUBLIC. På iOS krävs alternativet .authenticationRequired för åtgärder som kräver auktorisering.
På Android återskapar systemet processen och levererar Intent. På iOS startar systemet appen i bakgrunden. Leverans kan garanteras med BroadcastReceiver på Android och UNNotificationServiceExtension på iOS.
På Android syns åtgärder omedelbart under aviseringen som ikoner. På iOS är åtgärder dolda bakom lång tryckning eller svepning. UX-design av aviseringar måste ta hänsyn till dessa plattformsskillnader.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också