IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Comment faire fonctionner une App en background avec Cordova et Jquery Mobile


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut Comment faire fonctionner une App en background avec Cordova et Jquery Mobile
    Bonjour à tous

    Je suis toujours novice et je termine une application pour Android et IOS, que je développe avec Cordova et jQuery Mobile

    Elle fonctionne mais je constate que lorsque le téléphone est en veille et même que l'APP est en backgroud, il n'y as plus d'alarme.

    Toutes les 5mn, elle doit faire une requete MySQL avec ajax et mettre ajours les informations (température) des stations qui sont affichés sur un map.

    J'ai trouvé un plugin cordova-plugin-background-mode et j'ai commence par faire ceci

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    document.addEventListener('deviceready', onDeviceReady, false);
    function onDeviceReady() {
        document.getElementById('deviceready').classList.add('deviseIsReady');
        cordova.plugins.backgroundMode.enable();
     
        if(Pages.checkConnection() == true)
            {
                Maps.load(); 
                setInterval(Maps.load, 300000);   
            }
    }

    Pour l'activé quand le devise est prêt. Puis il charge la Map en faisant cette requete MySQL et le répête toutes les 5mn. J'ai remarqué qu'après avoir ajouté la ligne pour activé le module, quand j'ouvre une autre App, puis je clique sur mon App, elle redémarre. Ce qui se passe pas quand j'enlève cette ligne.

    Aussi, je ne suis pas certain de comment l'utiliser

    Il y a aussi ceci

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    $(window).load(function(){
     
        document.addEventListener("offline", Pages.offLine, false);
        document.getElementById("refresh").addEventListener("click", Maps.refresh);
        document.getElementById("ffield").addEventListener("change", Maps.field);
        document.getElementById("fstations").addEventListener("change", Charts.changeStation);
        document.getElementById("threshold").addEventListener("change", Pref.threshold);
        document.getElementById("ffieldpref").addEventListener("change", Pref.field);
        cordova.plugins.backgroundMode.on('EVENT', backgroundEvent);
     
    });
     
     
    function backgroundEvent(){
        if(cordova.plugins.backgroundMode.isActive()){
            cordova.plugins.backgroundMode.moveToBackground();
        }
        else
        {
            cordova.plugins.backgroundMode.moveToForeground();
        }
    }
    Mais je en sais pas a quel moment, il faut activer le module.

    J'espère que vous pourrez m'aider.

    Merci et bon dimanche

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pourquoi récupérer des données en tache de fonds si elle ne sont pas affichées ?

    Il sera plus judicieux de récupérer toute les données depuis la dernière récupération quand ton appli revient au premier plan. Ainsi pas d'utilisation batterie et datas caché à l'utilisateur.

    Si c'est vraiment critique , il vaut mieux cadencer la récupération soit par des notifications push , soit par un mécanisme dédié à Android tel que le Workmanager (il doit exister un equivalent IOS) qui décidera du moment le plus opportun pour réaliser la tache demandé.
    D'autant plus, que de ce que je comprend de ce plugin, c'est qu'il ne permet pas à l'app de "s'endormir" elle est donc active en permanence et ca peut ne pas passer les validation des stores (en particulier chez apple)
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pourquoi récupérer des données en tache de fonds si elle ne sont pas affichées ?
    Je n'ai pas besoin d'afficher les mesures si le téléphne est en background ou si le téléphone est en mode sleep, mais l'application pouvoir faire sonner le téléphone si une station est en alarme. L'application doit donc toujours pouvoir questionner le serveur pour connaitre le statut des stations.
    Quand l'utilisateur re-ouvre son APP, les mesures sont rafraichie à ce moement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    il vaut mieux cadencer la récupération soit par des notifications push
    Oui ne effet, je traville aussi sur cette alternative qui me semble bien meilleur.
    je regarde du côté de OneSignal et je regarde comment mettre ceci en place par segment ou par Tag. Mais c'est encore le flou. Le top serait en effet qu'un message Push soit envoyer à certain utilisateur. Il ouvriront leur APP et verront les status.
    La problématique est qu'un utilisateur doit pouvoir choisir son segments, dans ses préférences. Si le vignerons A veux etre alarmé pour sa vigne A mais pas la vigne B qui appartient au vigneron B.
    Si le vignerons B veut suivre les deux vignes, ou plus ou moins.
    Un segmentent un un terrain.

    C'est intéressant WorkManager. Je vais m'intéressé à ceci.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Clairement pour ton besoin les notification push sont la solution.

    Ta problématique est assez simple à gérer qui plus est. Il te suffit coté serveur d'avoir une table qui associe quel capteur notifie quelle personne.
    Il faut ensuite imaginer une UI sur ton appli qui permet à l'utilisateur de sélectionner les capteurs pour les quels il veux être notifié (ce qui permet donc de remplir la table précédemment cité)
    Et enfin quand ton serveur détecte une alerte , il récupère les personnes associées à ce capteur , retrouve le token de notification associé ( que tu auras préalablement stocké dans la table utilisateur par exemple) et envoi une notification push à google a ces token. Notification qui sera ensuite dispatché sur les téléphones
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Comment faire dialoguer une App Android avec script serveur
    Par sly77400 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 26/12/2016, 08h30
  2. Comment faire fonctionner une requête avec NOT EXISTS
    Par arnaudperfect dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/11/2007, 10h39
  3. Comment faire fonctionner une fenêtre Login
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 3
    Dernier message: 29/10/2006, 12h00
  4. Réponses: 1
    Dernier message: 06/04/2006, 15h35
  5. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo