Partage
  • Partager sur Facebook
  • Partager sur Twitter

Systeme de notification android studio

    10 septembre 2017 à 16:03:01

    Salut,

    Je suis entrain de faire un systeme de notification sur mon app. En gros, lorsque l'appli a du nouveau, une notification apparait sur l'écran de l'utilisateur.

    Donc j'ai fais une classe MesNotifs qui fait une requetes sur un serveur web toutes les 5 mins pour savoir si l'appli a un truc de nouveau ou non. Ensuute en fonction de la reponse, je creer ou non une notification.

    Mais le probleme c'est que pour que ca marche, il faut que l'appli soit toujouts ouverte (toujours entrain de tourner). Or, quand je faire mon appli, elle s'arrête. Donc pas très pratique...

    • Partager sur Facebook
    • Partager sur Twitter
      10 septembre 2017 à 16:19:41

      bonjour,

      tu peux mettre en place un service, tache asynchrone...

      https://developer.android.com/reference/android/app/Service.html

      • Partager sur Facebook
      • Partager sur Twitter
        10 septembre 2017 à 16:25:36

        Salut,

        Ce n'est vraiment pas une bonne pratique, tu vas exploser la batterie de ton utilisateur ! D'autant plus qu'à partir d'Android O, les services ont des limitations pour justement empêcher ce genre de choses !

        Dans le cadre des notifications, ce n'est pas au téléphone de vérifier auprès du serveur s'il y a des nouveautés mais au serveur de communiquer avec le service FCM qui lui même réveillera l'application pour lui signifier qu'il convient d'afficher une notification. C'est beaucoup moins couteux d'un point de vue batterie !

        Cet article peut t'aider à comprendre comment ça fonctionne : https://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

        • Partager sur Facebook
        • Partager sur Twitter
          10 septembre 2017 à 16:39:38

          En gros, si le FCM de google tombe en panne, mon utilisateur n'a plus de notification :(
          • Partager sur Facebook
          • Partager sur Twitter
            10 septembre 2017 à 19:52:49

            Ne t'inquiète pas trop pour ça... Si le FCM tombe en panne c'est l'intégralité des terminaux sous Android qui ne recevront plus de notifications... 100% des applications des gros éditeurs passent par FCM. Il s'agit de la façon de faire pour les notification.
            • Partager sur Facebook
            • Partager sur Twitter
              10 septembre 2017 à 22:21:35

              Oui, c'est sur :D

              Donc j'ai testé sur un nouveau projet, mais j'ai un petit soucis d'affichage du token. Voilà ce que j'ai fais :

              • Je me suis connecté à firebase : https://firebase.google.com/ avec mon compte google, puis j'ai cliquer sur Get Started.
                J'ai configurer mon projet avec : le nom de l'appli, le nom du package, la clé sha1 de mon projet.
              • Ensuite, dans android studio, dans la partie tools => firebase, j'ai configurer l'onglet : Cloud Messaging (j'ai laissé firebase configurer tous les fichiers graddle avec un bouton auto)
              • Ensuite, j'ai créer le fichier :
                FirebaseIdService :
                public class FirebaseIdService extends FirebaseInstanceIdService {
                    @Override
                    public void onTokenRefresh() {
                        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
                        Log.d("PRINT TOKEN", "Refreshed token: " + refreshedToken);
                    }
                }

              Et dans le manifest, j'ai rajouté le service :

              <service android:name=".FirebaseIdService">
                          <intent-filter>
                              <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
                          </intent-filter>
                      </service>
              

              Lorsque j'éxécute mon application, je n'ais aucune erreur, mais je ne vois pas dans le logcat le PRINT TOKEN... Alors que normallement je devrais le voir, non ?


              • Partager sur Facebook
              • Partager sur Twitter
                11 septembre 2017 à 9:10:38

                Salut,

                Ce token ne s'affiche pas systématiquement. Si par exemple si as exécuté une fois l'application avant de faire ta log, le token ne s'affichera plus. Si tu veux forcer l'affichage, il convient par exemple de supprimer les données et le cache de ton application ou de la désinstaller et de la réinstaller.

                • Partager sur Facebook
                • Partager sur Twitter
                  11 septembre 2017 à 16:09:15

                  J'ai essayé de vider le cache et de réinstaller l'appli, mais le token ne s'affiche toujours pas.

                  J'ai peur qu'il y ait un pépin dans mon programme et du coup que je continue à coder le système de notif pour rien...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 septembre 2017 à 8:23:04

                    Parce que j'ai besoin du token afin que mon serveur puisse contacter la FCM.

                    Et dans la partie to, il faut que je mette le token.

                    Sauf que ca me renvoie de message quand je l'éxécute :

                    {"multicast_id":8828180671961822089,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

                    Donc je me demandais si le token c'était le bon.

                    Pour le trouver, je suis aller dans firebase, puis paramètre du projet, puis j'ai copié la ligne App ID...


                    -
                    Edité par Luzwitz 13 septembre 2017 à 19:51:46

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 septembre 2017 à 9:15:02

                      Le token est spécifique à chaque terminal. Tu ne le trouveras donc pas dans la console firebase. C'est à ton application mobile de le communiquer à ton serveur à chaque rafraichissement pour qu'ensuite tu l'enregistres et puisse envoyer ta notification à tous les terminaux.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 septembre 2017 à 10:31:40

                        Mais je croyais que l'appli mobile ne faisait aucun raffrachissement est qu'elle "tait simplement réveillé par la fcm lorsqu'il y avait une nouvelle notification du serveur :o

                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 septembre 2017 à 14:31:04

                          Oui quand elle reçoit le push. Mais il faut bien que le téléphone puisse s'inscrire aux notifications et donc qu'il génère sont token.

                          Ou alors on en parle pas de la même chose.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 septembre 2017 à 9:38:36

                            Bon ben j'ai réussi à mettre le service de notification en place et tout marche.

                            MAIS je n'ais jamais utilisé le token, ni le service :

                            <service android:name=".FirebaseIDService">
                                <intent-filter>
                                    <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
                                </intent-filter>
                            </service>

                            En faite je pense que Firebase envoie la notification à mon téléphone via le nom du package, non ?

                            Sinon je ne vois pas d'autre explication...

                            Mais alors pourquoi tous les tutos parlent de ce token et de ce service ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 septembre 2017 à 9:49:34

                              Sans ce token, je pense que tu envoies ta notification a TOUS les téléphones sur lesquels l'application est installée. Ce qui signifie que les utilisateurs ne peuvent pas empêcher la réception de la notification.

                              C'est souvent un motif de désinstallation.

                              La bonne pratique est de n'envoyer la notification qu'à ceux qui souhaitent vraiment les recevoir.

                              -
                              Edité par rolandl 14 septembre 2017 à 9:50:27

                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 septembre 2017 à 9:52:00

                                D'accord, merci.

                                Par contre j'ai un soucis. Si je vais dans les paramètres de l'application et que je clique sur "Forcer l'arrêt", je ne reçois plus de notification :o

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Systeme de notification android studio

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown