[JAVA] Android O (API-Version 26) Push-Benachrichtigung

*

Ab Android O (API-Version 26) ist eine Registrierung der Push-Benachrichtigung "Benachrichtigungskanal" erforderlich. Mit anderen Worten, das Ziel ist, wenn targetSdkVersion 26 oder mehr beträgt.

Was ist ein Benachrichtigungskanal?

Der "Benachrichtigungskanal" ist mit einer Funktion ausgestattet, mit der Sie Benachrichtigungen entsprechend dem Inhalt der Benachrichtigung ein- und ausschalten können, z. B. "Gewinninformationen" und "Benachrichtigung zum Stichtag" oder nach Nachrichtenkategorie.

Selbst wenn ich die targetSdkVersion von 25 oder weniger auf 26 oder mehr erhöhe, werden in Android Studio keine Warnungen angezeigt. Wenn ich jedoch erstelle und benachrichtige, wird der Fehler "Kein Kanal" wie unten gezeigt angezeigt.

E/NotificationService: No Channel found for pkg=com.example.app, channelId=null, id=1234567890, tag=null, opPkg=com.example.app, callingUid=12345, userId=0, incomingUserId=0, notificationUid=12345, notification=Notification(channel=null pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)

Selbstverständlich können die Benachrichtigungseinstellungen auch nicht von der Anwendungsseite aus neu geschrieben werden, sodass die Anwendungsseite die Einstellungen vor Android O nicht mit dem Einstellungsbildschirm auf der Anwendungsseite synchronisieren kann.

Registrierung des Benachrichtigungskanals

Registrieren Sie den Kanal wie folgt.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

    NotificationChannel channel = new NotificationChannel(
        //Eindeutige Kanal-ID
        //Es scheint gut, es hier irgendwo konstant zu halten
        "channel_id_sample",

        //Kanalname wird in den Einstellungen angezeigt
        //Es scheint gut, die Ressource hier tatsächlich anzugeben
        "Push-Benachrichtigung",

        //Kanalbedeutung
        //Der Anzeigeort unterscheidet sich je nach Wichtigkeit
        NotificationManager.IMPORTANCE_DEFAULT
    );

    //Aktivieren Sie Lichter für Benachrichtigungen
    channel.enableLights(true);
    //Helle Farbe zum Zeitpunkt der Benachrichtigung
    channel.setLightColor(Color.WHITE);
    //Anzeigeebene auf dem Sperrbildschirm
    channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);

    //Abonnieren Sie den Kanal
    manager.createNotificationChannel(channel);
}

Eine Gruppierung ist auch mit "NotificationChannelGroup" und "setGroup" möglich.

Benachrichtigungskanal benachrichtigen

Hier gibt es nur wenige Änderungen. Geben Sie einfach den Kanal mit "setChannelId" an.

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

Resources res = getResources();
int icon = res.getIdentifier("app_icon", "drawable", this.getPackageName());
int titleId = res.getIdentifier("app_name", "string", this.getPackageName());
String applicationName = this.getString(titleId);
String message = "Etwas testen";

Notification.Builder mBuilder = new Notification.Builder(this)
        .setSmallIcon(icon)
        .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), icon))
        .setContentTitle(applicationName)
        .setContentText(message)
        .setContentIntent(pendingIntent);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    mBuilder.setChannelId("channel_id_sample");
}

Warum spricht es jetzt über Android O Push-Benachrichtigungen?

Nach August dieses Jahres können neue Apps erst dann im Play Store angewendet werden, wenn die targetSdkVersion auf 26 oder höher erhöht wurde. Nach November dieses Jahres können vorhandene Apps erst dann im Play Store angewendet werden, wenn die targetSdkVersion auf 26 oder höher erhöht wurde. Danach muss nach 2019 die targetSdkVersion innerhalb eines Jahres nach Veröffentlichung der neuen Version erhöht werden.

Referenz

Recommended Posts

Android O (API-Version 26) Push-Benachrichtigung
Kompatibel mit Android 10 (API 29)