Il peut arriver que sur Android, l'action du push ne fonctionne pas lorsque vous vous envoyez un push soit en application killée, soit en application minimisée ou ouverte. 


Afin de comprendre pourquoi cela se produit, il est tout d'abord important de comprendre le fonctionnement de notre SDK lorsque l'on reçoit un push. 

Au sein de chaque Activity (vue ou page de l'application), trois méthodes sont intégrées et appelées :


- Le startActivity (dans le onResume) : Permet de traiter l'intent de l'Activity contenant les informations de la notification.

- Le setIntent (dans le onNewIntent) : Permet d'indiquer au SDK qu'un écran, déjà lancé, a été relancé via une notification.

- Le stopActivity (dans le onPause) : Permet d'indiquer au SDK qu'on quitte l'Activity (non utilisé pour la mécanique de traitement des notifications)


  • Voici les différentes explications possibles si l'action du push ne fonctionne pas en application killée :

1. Le SDK n'est pas intégré dans le Splashscreen.

Pour ce cas précis, voici le scénario qui peut se produire : 


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous cliquez sur le push, 

- Vous arrivez sur le SplashScreen,

- Vous arrivez sur la HomePage, 

- Aucune action n'est exécutée, vous restez donc sur la page Home.

Si aucune redirection n'est faite, il se peut que le SDK ne soit pas intégré dans le SplashScreen. Pour Android, il est important que pour chaque Activity, le SDK soit lancé. Si le SDK n'est pas lancé dans le SplashScreen, les données du push ne pourront pas être traitées une fois reçues.


2. Aucun lock n'est activé sur le SplashScreen.

Voici le scénario qui peut se produire :


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous cliquez sur le push, 

- Vous arrivez sur le SplashScreen,

- Vous arrivez sur la HomePage, 

- Aucune action n'est exécutée,

- Lorsque vous cliquez sur "Retour", vous arrivez sur la page du RichPush.


Dans ce cas précis, voici ce qui se passe au niveau du système et du SDK : 


- Les informations sont traitées dans le onResume : la redirection est ainsi correctement exécutée,

- Le chargement du SplashScreen se termine en arrière plan et lance la redirection vers la HomePage.

Comme aucun lock n'a été activé sur le SplashScreen la homepage est lancée directement après la redirection. De ce fait, elle se positionne aussitôt par dessus la page de redirection.

C'est pourquoi, il est important qu'un lock soit placé sur le SplashScreen, afin de déclencher l'action du push une fois arrivé sur la page principale de l'application.


3. La redirection vers la HomePage est faite trop tôt.

Pour ce cas précis, voici le scénario qui peut se produire : 


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous cliquez sur le push, 

- Vous arrivez sur le SplashScreen,

- Vous arrivez sur la page Home, 

- Aucune action n'est exécutée, vous restez donc sur la page Home.


Pour ce scénario, l'explication est simple : 


- La redirection vers la page Home est déclenchée dans la méthode du onCreate, de ce fait les informations du push n'ont pas le temps d'être traitées par le SDK (via le startActivity du onResume). Dans ce cas, l'information de la notification est perdue.

C'est pourquoi, aucune action n'est exécutée.


  • Voici les différentes explications possibles si l'action du push ne fonctionne pas en application minimisée (en arrière plan) ou ouverte (en premier plan) 

1. Un lock de push a été activé sur la page actuelle.

Voici le scénario qui peut se produire : 


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous recevez le push,

- Vous cliquez sur le push,

- Aucune action n'est exécutée, vous restez donc sur la page actuelle.


Si un lock de push a été activé sur la page actuelle, cela va ainsi bloquer l'exécution du push jusqu'à temps d'arriver sur une page non lockée.

Il vous faut ainsi vérifier qu'aucun lock n'ait été placé sur la page actuelle.


2. Le SDK n'est pas intégré sur la page actuelle.

Voici le scénario qui peut se produire :


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous recevez le push,

- Vous cliquez sur le push,

- Aucune action n'est exécutée, vous restez donc sur la page actuelle.


Comme pour l'action du push en application killée, si le SDK n'est pas intégrée dans une Activity, l'action du push ne sera ainsi jamais traitée puisque les informations seront perdues.


3. La méthode SetIntent n'a pas été intégrée.

Voici le scénario qui peut se produire :


- Vous vous envoyez un push avec un rich push (webview, navigateur ou schéma URL),

- Vous recevez le push,

- Vous cliquez sur le push,

- Aucune action n'est exécutée, vous restez donc sur la page actuelle.


Ce qui se passe dans ce cas de figure est que la méthode SetIntent n'est pas intégrée dans le onNewIntent, de ce fait, les informations reçues ne peuvent pas être traitées par notre SDK.

Par conséquent, le push est reçu, mais l'action du push ne fonctionne pas.

Pour éviter cela, il faut bien vérifier que la méthode SetIntent est bien intégrée dans le onNewIntent.