Lokale Benachrichtigungen in Android?

Lesezeit: 4 Minuten

Benutzer-Avatar
Arsalan Haider

In iOS wird eine “Lokale Benachrichtigung” von einer App verwendet, wenn sie im Hintergrund läuft, um den Benutzer darüber zu informieren, dass etwas passiert ist, auf das er achten sollte:

Lokale Benachrichtigungen … um Benutzer zu informieren, wenn neue Daten für Ihre App verfügbar sind, auch wenn Ihre App nicht im Vordergrund läuft. Beispielsweise kann eine Messaging-App den Benutzer darüber informieren, wenn eine neue Nachricht eingetroffen ist, und eine Kalender-App könnte den Benutzer über einen bevorstehenden Termin informieren.

Apple dev – Übersicht über lokale und Remote-Benachrichtigungen

[Its “local” if the app itself is providing the new data; “remote” if a remote server is sending the update.]

Gibt es ein Äquivalent für Android?

  • Dies scheint die älteste Frage dieser Frage zu sein; es wird von mindestens einer späteren Version der Frage verlinkt, und Varianten der Frage wurden mindestens 4 Mal gestellt. Daher habe ich es umgeschrieben, um es weniger vage zu machen, und dafür gestimmt, es wieder zu öffnen. IMHO ist es eine grundlegende mobile Funktion; Die Frage verdient es, gestellt und beantwortet zu werden. [Alternatively, could close it as a duplicate of a later variant, if that has better answers, since no answer was accepted here. Google “stackoverflow android local notification”]

    – WerkzeugmacherSteve

    25. März 2019 um 20:20 Uhr


  • Zwei nützliche Antworten in anderen Threads: stackoverflow.com/a/8590724/199364, stackoverflow.com/a/31946656/199364 – aus diesen sehen wir, dass Android nicht das direkte Äquivalent der iOS-Funktion “lokale Benachrichtigung” hat. Mehrere verschiedene Android-APIs werden als möglicherweise an einer Lösung beteiligt erwähnt. Daher verstehe ich, wenn der Konsens ist, dass dies immer noch “zu breit” ist, obwohl ich persönlich gerne an einem Ort mögliche Alternativen für “App im Hintergrund, wie sollen wir dem Benutzer mitteilen, dass etwas Wichtiges passiert ist?”

    – WerkzeugmacherSteve

    25. März 2019 um 20:35 Uhr


Verwenden Sie NotificationCompat.Builder, wenn Sie auch auf alte APIs abzielen.

    Intent intent = new Intent(ctx, HomeActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder b = new NotificationCompat.Builder(ctx);

    b.setAutoCancel(true)
     .setDefaults(Notification.DEFAULT_ALL)
     .setWhen(System.currentTimeMillis())         
     .setSmallIcon(R.drawable.ic_launcher)
     .setTicker("Hearty365")            
     .setContentTitle("Default notification")
     .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
     .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
     .setContentIntent(contentIntent)
     .setContentInfo("Info");


    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1, b.build());

  • Gutes Arbeitsbeispiel. Ich habe anderen Beispielcode befolgt und es hat mit Lollipop oder höheren Versionen funktioniert. Aber dieser Code funktioniert auch auf Kitkat (ich weiß nicht warum … vielleicht das Symbol oder die Standardeinstellungen?) Danke

    – po5i

    29. November 2016 um 19:52 Uhr

Wenn Sie lokale Benachrichtigungen mit großen Datenmengen auslösen möchten, dh mit mehrzeiligem Text in einer einzelnen Benachrichtigung mit Titel, Ticker, Symbol, Ton … verwenden Sie den folgenden Code. Ich denke, er wird Ihnen helfen …

   Intent notificationIntent = new Intent(context,
            ReminderListActivity.class);



    notificationIntent.putExtra("clicked", "Notification Clicked");
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP); // To open only one activity


        // Invoking the default notification service 

        NotificationManager mNotificationManager;
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                context);
        Uri uri = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        mBuilder.setContentTitle("Reminder");
        mBuilder.setContentText("You have new Reminders.");
        mBuilder.setTicker("New Reminder Alert!");
        mBuilder.setSmallIcon(R.drawable.clock);
        mBuilder.setSound(uri);
        mBuilder.setAutoCancel(true);

        // Add Big View Specific Configuration 
        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
        String[] events = null;

            events[0] = new String("Your first line text ");
            events[1] = new String(" Your second line text");



        // Sets a title for the Inbox style big view
        inboxStyle.setBigContentTitle("You have Reminders:");

        // Moves events into the big view
        for (int i = 0; i < events.length; i++) {
            inboxStyle.addLine(events[i]);
        }

        mBuilder.setStyle(inboxStyle);

        // Creates an explicit intent for an Activity in your app 
        Intent resultIntent = new Intent(context,
                ReminderListActivity.class);

        TaskStackBuilder stackBuilder = TaskStackBuilder
                .create(context);
        stackBuilder.addParentStack(ReminderListActivity.class);


        // Adds the Intent that starts the Activity to the top of the stack


        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder
                .getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);

        mBuilder.setContentIntent(resultPendingIntent);
        mNotificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);


        // notificationID allows you to update the notification later  on.


        mNotificationManager.notify(999, mBuilder.build());

LocalBroadcastManager sieht nach einer besseren Lösung aus: http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html Erstellen Sie Ihre eigene benutzerdefinierte Absichtsaktion, senden Sie sie an Ihren Prozess und stellen Sie sicher, dass alle Aktivitäten usw. als Empfänger für diese Absicht registriert sind.

  • Mein Verständnis ist: Eine lokale iPhone-Benachrichtigung ist eine Kommunikation von Ihrer App an den Benutzer. LocalBroadcastManager auf Android ist eine Kommunikation von einem Teil Ihrer App zu einem anderen Teil Ihrer App. Ich glaube nicht, dass LocalBroadcastManager für die Frage relevant ist, aber korrigieren Sie mich, wenn ich falsch liege.

    – WerkzeugmacherSteve

    25. März 2019 um 20:07 Uhr


1178740cookie-checkLokale Benachrichtigungen in Android?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy