Einmalige Push-Notification

  • Antworten:5
Steffen Müller
  • Forum-Beiträge: 3

01.11.2017, 19:26:38 via Website

Hallo,
ich frage mich ob es in Android Studio möglich ist eine EINMALIGE Push Notification zu coden. Momentan habe ich einen Code der gut funktioniert. Der Code wird über einen Button ausgelößt und liegt in einem Service da ich ihn aus Ordnungsgründen nicht in die MainActivity schreiben wollte. Nun möchte ich das diese Benachrichtigung aber nur bei der ersten Anwendung der App und somit beim ersten Button klick angezeigt wird und die Notification so nur einmalig ausgegeben wird.Also wenn ein User sich die App lädt und dann diesen Button betätigt, soll eine Anleitung einmalig ausgegeben werden.Ich hoffe jemand kann mir helfen.:)

Mein Notification-Code:
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.Color;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;

public class NotificationDisplayService extends Service {
public NotificationDisplayService() {
}
final int NOTIFICATION_ID = 16;
@Override
public IBinder onBind(Intent intent) {

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
displayNotification("Tipps ", "Anleitung die nur ein mal gezeigt werden soll.");
stopSelf();
return super.onStartCommand(intent, flags, startId);
}

private void displayNotification(String title, String text){

    Intent notificationIntent = new Intent(this, LanisActivity.class);
    PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

    NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
            .setContentTitle(title)
            .setContentText(text)
            .setSmallIcon(R.drawable.a4)
            .setColor(getResources().getColor(R.color.colorPrimaryDark))
            .setVibrate(new long[]{0, 400, 0, 0})
            .setLights(Color.WHITE, 0, 0)
            .setContentIntent(notificationPendingIntent)
            .setAutoCancel(true)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(text));

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(NOTIFICATION_ID, notification.build());
}

}

— geändert am 01.11.2017, 20:42:36

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.11.2017, 20:19:54 via App

In welchem Kontext befindest du dich, dass du einen onStartCommand hast?
Ist das ein Service oder sowas?

LG Pascal //It's not a bug, it's a feature. :) ;)

swa00

Antworten
Steffen Müller
  • Forum-Beiträge: 3

01.11.2017, 20:38:16 via Website

Ja es ist ein Service da ich den Code nicht in die MainActivity schreiben wollte.;)

Antworten
swa00
  • Forum-Beiträge: 3.704

01.11.2017, 20:43:22 via Website

@Sorry Pascal , nur ein Einwurf

Nun möchte ich das diese aber nur bei der ersten anwendung der App und somit beim ersten Button klick angezeigt wird und die Notification so nur einmalig ausgegeben wird.

Und warum dann Service ?

Eine Klasse mit einem "AllreadyDone" Flag, würde doch seinen Dienst tun - oder ?
So wie du das da hast , würde jedesmal beim Starten des Services die Notification ausgegeben werden.

Also ein Service, der nur ein einziges mal verwendet wird ? welchen Sinn soll das haben ??

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Steffen Müller
  • Forum-Beiträge: 3

01.11.2017, 21:16:57 via Website

Es muss kein Service sein.Ich bin in der App Entwicklung erst neu...Ich möchte nur irgendwie auf eine einmalige Benachrichtung kommen....Wie kann ich eine eine AlreadyDone Klasse erstellen?

Antworten
swa00
  • Forum-Beiträge: 3.704

01.11.2017, 21:27:17 via Website

Hallo Steffen,

Ich bin in der App Entwicklung erst neu

da hatte ich schon fast vermutet.

Ein Service ist ein Prozess ohne UI. Ein Service wird normalerweise dazu eingesetzt,
Dinge im Hintergrund zu erledigen -

Das was du suchst ist die klassische OOP ( Objekt orientierte Programmierung ) in dem man Funktionen
in Klassen auslagert und diese dann verwendet.
Ein Flag ist ein Zustand , den man sich setzt oder ggf Abspeichert - hierzu kannst du dir mal die SharedPreferences anschauen.

Allerdings muss ich dir grundsätzlich anraten , dich erst mal mit den Grundlagen auseinander zu setzen.
Und die scheinen dir zu fehlen.

Das reine Copy & Paste aus dem Internet geht schief.

— geändert am 01.11.2017, 21:28:02

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten