it-swarm.com.de

Kann die Phonegap-App im Hintergrund funktionieren?

was ich damit meine, arbeitet in totalem Hintergrund, z. Selbst wenn der Bildschirm heruntergefahren ist, läuft die App und kann Benachrichtigungen mit einem Ton senden.

Meine App dient zur Preisänderung. Wenn sich ein Preis ändert, wird ein Alarm ausgegeben.

Also sollte die Antwort ja oder nein sein? Vielen Dank.

40
Leo Cai
47

Da es eine weitere mögliche Lösung mit iOS 7 gab, werde ich eine zusätzliche Antwort für Benutzer von iOS 7 und weiteren geben.

Die neue Funktion Background Fetch ermöglicht das regelmäßige Aktualisieren von Inhalten einer im Hintergrund befindlichen App. Das Zeitintervall des Abrufs kann nicht vom Benutzer festgelegt werden, sondern wird vom iOS basierend auf den Statistiken des Benutzers (Verwendung der App usw.) festgelegt.

Auf dieses neue Feature kann mit PhoneGap/Cordova über Plugins zugegriffen werden - zum Glück gibt es bereits wurde ein Plugin entwickelt , das diesen Zugriff bereitstellt .. _. Sie können es in Ihrem Cordova-Projekt installieren

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

In Verbindung mit einem Plugin, das Zugriff auf lokale Benachrichtigungen von iOS bietet, wirkt dies Wunder. Ein solches Plugin wurde ebenfalls entwickelt, zum Beispiel dieses . Installieren Sie es in Ihrem Cordova-Projekt von 

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

Diese Plugins können jetzt in Ihrem Javascript-Code kombiniert werden, um Hintergrundaktivitäten auszuführen:

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);
}

Dieses Abruf-Plugin verwendet den Wert UIApplicationBackgroundFetchIntervalMinimum für das Abrufintervall. Dies führt zu der schnellstmöglichen Abrufperiodizität.

28
Clawish

Wenn Sie Cordova für ios 7 + erstellen und bereit sind, Ihren generischen Code in xcode zu verlassen, können Sie der .plist-Datei Ihres ios-Builds "erforderliche Hintergrundmodi" hinzufügen, die nicht durch einen neuen Build überschrieben werden .

z.B. Ich habe die Option "App lädt Inhalte aus dem Netzwerk" ausgewählt

Alles, was Sie dann tun müssen, ist sicherzustellen, dass Ihre App alle paar Minuten die Außenwelt durchlöchert (ich benutze Firebase, also bekomme ich den Wert eines Dummy-Knotens).

Ich habe noch nicht an den App Store übermittelt, kann aber nicht erkennen, wie die Anforderung fehlschlagen sollte, wenn die Anforderung nicht zu häufig ist (ich verstehe, dass Apps etwa 10 Minuten im Hintergrund haben, bevor sie ausgesetzt werden) und welche Ressourcen Ihre App im Hintergrund benötigt in Ruhe sind nicht belastend.

Dadurch wird die Lösung dieses Problems auf ein paar Zeilen im Code reduziert.

0
blythburgh