[JAVA] Android O (API version 26) Notification push

*

À partir d'Android O (API version 26), l'inscription au «canal de notification» par notification push est requise. En d'autres termes, la cible est lorsque targetSdkVersion est égal ou supérieur à 26.

Qu'est-ce qu'un canal de notification?

Le "canal de notification" est équipé d'une fonction qui vous permet d'activer / désactiver les notifications en fonction du contenu de la notification, comme la séparation des "informations sur les bénéfices" et des "notifications de délai de points" ou par catégorie d'actualités.

Même si j'augmente la targetSdkVersion de 25 ou moins à 26 ou plus, aucun avertissement n'est affiché dans Android Studio. Ce n'est pas fait, mais lorsque je le construis et le notifie, une erreur s'affiche comme "Aucun canal" comme indiqué ci-dessous.

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)

De plus, bien sûr, les paramètres de notification ne peuvent pas être réécrits du côté de l'application, de sorte que le côté de l'application ne peut pas synchroniser les paramètres avant Android O avec l'écran de configuration du côté de l'application.

Enregistrement du canal de notification

Enregistrez la chaîne comme suit.

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

    NotificationChannel channel = new NotificationChannel(
        //ID de chaîne unique
        //Il semble bon de le garder constant ici quelque part
        "channel_id_sample",

        //Nom du canal affiché dans les paramètres
        //Il semble bon de spécifier la ressource ici
        "Notification push",

        //Importance du canal
        //L'emplacement d'affichage diffère selon l'importance
        NotificationManager.IMPORTANCE_DEFAULT
    );

    //Activer les lumières sur les notifications
    channel.enableLights(true);
    //Couleur claire au moment de la notification
    channel.setLightColor(Color.WHITE);
    //Niveau d'affichage sur l'écran de verrouillage
    channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);

    //Abonnez-vous à la chaîne
    manager.createNotificationChannel(channel);
}

Le regroupement est également possible en utilisant NotificationChannelGroup et setGroup.

Notifier le canal de notification

Il y a quelques changements ici, spécifiez simplement le canal avec setChannelId.

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 = "Quelque chose de test";

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");
}

Pourquoi parle-t-il maintenant des notifications Android O Push?

Après août de cette année, les nouvelles applications ne pourront plus s'appliquer au Play Store à moins que la targetSdkVersion soit portée à 26 ou plus. Après novembre de cette année, les applications existantes ne pourront plus s'appliquer au Play Store à moins que la targetSdkVersion ne soit augmentée à 26 ou plus. Par la suite, après 2019, il sera nécessaire d'augmenter la targetSdkVersion dans un délai d'un an à compter de la sortie de la nouvelle version.

référence

Recommended Posts

Android O (API version 26) Notification push
Compatible avec Android 10 (API 29)