L'application phonegap peut-elle fonctionner en arrière-plan?

ce que je veux dire, c'est travailler en arrière-plan total, par exemple même l'écran est éteint, l'application est en cours d'exécution et peut envoyer des notifications avec un son.

mon application est utilisée pour regarder les changements de prix. Il y aura une alerte avec un son quand un prix change.

alors, la réponse devrait être oui ou non? Grâce.

40
demandé sur Leo Cai 2013-01-08 12:18:41

3 réponses

Puisqu'il y a une autre solution possible avec iOS 7, je vais fournir une réponse supplémentaire pour les utilisateurs de iOS 7 et plus.

la nouvelle fonctionnalité Background Fetch permet de mettre régulièrement à jour le contenu d'une application qui se trouve en arrière-plan. L'intervalle de temps de la collecte ne peut pas être défini par l'utilisateur, mais est plutôt défini par l'iOS sur la base des statistiques de son utilisateur (utilisation de l'application, etc.).

cette nouvelle caractéristique peut être consulté avec PhoneGap/Cordova via plugins - heureusement, il ya déjà a été développé un plugin fournir cet accès. Vous pouvez l'installer à votre projet Cordova par

cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git

en conjonction avec un plugin donnant accès à les notifications locales de iOS , Cela fait des merveilles. Un tel plugin a également été développé, par exemple celui-ci . L'installer sur votre projet Cordova

cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git

ces plugins peuvent maintenant être combinés dans votre code javascript, pour exécuter des activités de fond:

function onDeviceReady() {
    var Fetcher = window.plugins.backgroundFetch;

    // Your background-fetch handler.
    var fetchCallback = function() {
        console.log('BackgroundFetch initiated');

        // perform your ajax request to server here
        $.get({
            url: '/heartbeat.json',
            callback: function(response) {
                // process your response and whatnot.

                window.plugin.notification.local.add({ message: 'Just fetched!' });  //local notification
                Fetcher.finish();   // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os.
            }
        });
    }
    Fetcher.configure(fetchCallback);
}

ce plugin de fetching utilise la valeur UIApplicationBackgroundFetchIntervalMinimum pour l'intervalle de fetching, il en résulte la périodicité de fetching la plus rapide possible.

28
répondu Clawish 2014-10-20 13:37:35

si vous construisez cordova pour ios 7 +, et que vous êtes prêt à sortir de votre code générique dans xcode, vous pouvez ajouter 'les modes d'arrière-plan requis' à la .fichier plist de votre construction ios et il ne sera pas écrasé par une nouvelle construction.

par exemple, j'ai choisi l'option "téléchargement du contenu de L'application sur le réseau

Tout ce que vous avez à faire ensuite est de s'assurer que votre application pokes le monde extérieur toutes les quelques minutes (j'utilise firebase, donc je reçois la valeur d'un mannequin nœud.)

Je n'ai pas encore soumis à app store, mais je ne vois pas comment il devrait échouer si la demande n'est pas trop fréquente (je comprends apps ont environ 10 minutes en arrière-plan avant qu'ils ne soient suspendus) et les ressources dont votre application a besoin en arrière-plan/au repos ne sont pas onéreux.

cela ramène la résolution de cette question à quelques lignes dans votre code.

0
répondu blythburgh 2016-04-26 17:22:08