web-dev-qa-db-fra.com

Delphi - Les nouvelles applications sur Google Play doivent cibler Android 8 (API de niveau 26) - Notification push en arrière-plan

À partir d'août 2018, toutes les nouvelles applications sur Google Play doivent cibler Android 8 (niveau d'API 26) ou supérieur, et à partir de novembre 2018, toutes les mises à jour d'applications sur Google Play doivent appartenir aux mêmes applications sur Google Play.

Pour le moment, la seule façon de télécharger une nouvelle application qui cible Android 8 est de modifier le fichier AndroidManifest.template.xml et de remplacer TargetSdkVersion = "% targetSdkVersion%" De: Android: targetSdkVersion = "26"

Le problème est qu'à partir de ce moment, l'application aura les restrictions introduites par Android O. Les autorisations considérées comme dangereuses (caméra, emplacement, SMS, ...) ne seront plus accordées à l'application du seul fait de les inclure dans le Manifeste Android. fichier. Au revoir à la caméra, au GPS, ... 

Sur ce site Web, vous pouvez suivre quelques étapes simples pour commencer à demander des autorisations à l'utilisateur: http://delphiworlds.com/2018/05/targeting-Android-8-and-higher/

CEPENDANT, la cible Android 8 a de nombreuses autres implications. Mon application, pour le simple fait de changer la variable targetSDKVersion de 25 à 26, ne reçoit pas Push Notifications lorsque l'application n'est pas en cours d'exécution (ou en arrière-plan).

Mon test est simple: je change le targetSDK et cela ne fonctionne plus. Je rembobine et cela fonctionne à nouveau, à la fois avec l'application en cours d'exécution et avec l'application en arrière-plan ou fermée.

La clé est le changement de TARGETSDKVERSION car j'ai toujours essayé de sélectionner le SDK 24.3.3 dans le SDK Manager.

Je pense que l'une des principales raisons est la disparition des services d'arrière-plan dans Android O, comme ils l'expliquent dans https://blog.klinkerapps.com/Android-o-background-services/ Mais je ne suis pas sûr .

MON GRAND PROBLÈME.

Je viens de télécharger une application Android 7 (niveau 25) sur Google Play. Le problème est qu'à partir de novembre 2018, je ne serai plus en mesure de télécharger des mises à jour si je ne change pas TARGETSDKVERSION au niveau 26. Mais si je le fais ... je vais arrêter de recevoir des notifications Push et, sans notifications Push, mon application ne fonctionne pas. POUR RIEN.

J'avoue que j'ai un peu peur avec ça

Je suis désolé pour mon anglais. 

Merci beaucoup. 

7
Juan M

Vous devrez vous assurer que votre notification est prioritaire. La FCM l'affichera immédiatement.

FCM tente de délivrer immédiatement des messages de priorité élevée, permettant ainsi au service FCM de réactiver un périphérique en veille si nécessaire et d'exécuter un traitement limité (notamment un accès réseau très limité). Les messages de priorité élevée doivent généralement entraîner une interaction de l'utilisateur avec votre application. Si FCM détecte un motif dans lequel ils ne le font pas, vos messages risquent de perdre leur priorité.

Si vos utilisateurs interagissent avec la notification, FCM ne la retardera pas. Les services d'arrière-plan peuvent ne pas être autorisés dans certains cas sous Android O mais cela ne signifie pas que vous ne pouvez pas envoyer de notifications.

De plus, votre notification ne sera pas affichée si vous n'utilisez pas de canaux de notification. Vous pouvez utiliser ce code pour créer des canaux de notification.

public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
    return;
}
NotificationManager notificationManager =
        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
                                                      "Channel name",
                                                      NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);

}

1
Suhaib Roomy