2013-08-07 15 views
5

Meine iPhone App hat 2 Modi, Online Modus und Offline Modus. Wenn der Benutzer die App im Online-Modus verwendet, wird die Anfrage sofort an den Server gesendet. Wenn der Benutzer die App im Offline-Modus verwendet, speichere ich die Anfrage lokal, damit ich sie hochladen kann, wenn das Internet verfügbar ist. Ich verwende die Erreichbarkeitsklasse, um die Internetverfügbarkeit zu überprüfen. Erreichbarkeit funktioniert gut mit App. Ich kann folgendes Szenario nicht erreichen. Ich hatte Anforderung gespeichert, während der Benutzer im Offline-Modus arbeitet, dh während der Benutzer die Anwendung im Hintergrund durch Klicken auf die Home-Taste im iPhone drückt. Nach einiger Zeit wird der Benutzer die WLAN- oder Mobilfunkverbindung in seinem Gerät aktivieren. Wenn der Benutzer die Internetverbindung aktiviert, sollte meine App, die sich im Hintergrund befindet, benachrichtigt werden und die Anfrage an den Server senden. Wie kann ich diese Funktionalität erreichen? Viele iOS-Anwendungen können diese Anforderung erfüllen. wie machen sie das? irgendeine Idee?Wie App im Hintergrund auf Internetverbindung überprüfen kann, IOS?

Ich versuchte folgenden Schritt, um dies zu erreichen, war aber nicht erfolgreich.Was ich mache ich hier falsch, hilf mir.

1) Ich habe Beobachter für kReachabilityChangedNotification innerhalb der applicationDidEnterBackground-Delegate-Methode hinzugefügt. aber meine App hört bei dieser Methode nicht auf die Kreachabiliychagednotification zu.

2) Wenn ich Observer für kReachabilityChangedNotification innerhalb von applicationdidbecomeActive hinzufüge, kann meine App auf Kreachabiliychagednotification warten.

Warum IOS nicht zulassen, für Kreachabiliychagednotification zu hören, wenn App im Hintergrund ist?

+0

Hallo, hast du irgendeine Antwort auf diese Frage? – souvickcse

+0

Hallo, konnten Sie dieses Problem lösen? – ShayanK

Antwort

1

Ich kam, um das gleiche Szenario zu behandeln, als ich an einem Projekt war, aber ich erfuhr, dass Standardmäßig im Hintergrund Zustand App nur für kurze Zeit bleibt, bewegen sich die meisten Apps kurz darauf in den suspendierten Zustand. Das bedeutet, dass die App im Hintergrund läuft, aber keinen Code ausführt. Ihre benutzerdefinierte Benachrichtigung funktioniert also nicht. Müssen network bei Wakeup Zeit in AppDelegate methodes requery:

applicationWillEnterForeground: 
applicationDidBecomeActive 

dies das beste war ich dieses Problem umgehen tat, hoffen, dass es

+0

Dank Hemant .. Aber haben Sie eine Idee, wie die andere iOS-App dies tun könnte? – RockandRoll

+0

ich denke, @Andrea hat Recht damit ... –

4

Die Antwort hilft ist, dass Sie nicht, wenn Sie Anwendung eines haben diese spezifischen Anwendung (unter Angabe von Apple doc):

Unterstützung für einige Arten von Hintergrundausführung muss in Voraus von der App erklärt werden, die sie verwendet. Eine App deklariert Unterstützung für einen -Dienst mithilfe seiner Info.plist-Datei. Fügen Sie den UIBackgroundModes Schlüssel zu Ihre Info.plist-Datei und setzen Sie den Wert auf ein Array, das eine oder mehrere der folgenden Strings:

* audio Die App hörbaren Inhalt an den Benutzer spielt, während im Hintergrund. (Dieser Inhalt umfasst das Streaming von Audio- oder Videoinhalten mit AirPlay.)
* location - Die App hält Benutzer über ihren Standort auf dem Laufenden, auch wenn sie im Hintergrund ausgeführt wird.
* voip-Die App bietet dem Benutzer die Möglichkeit, mit einer Internetverbindung eine Verbindung herzustellen.
* Kiosk-Inhalt-Die App ist eine Kiosk App, die Downloads und verarbeitet Magazin oder Zeitung Inhalt im Hintergrund.
* Externes Zubehör: Die App funktioniert mit einem Hardwarezubehör , das regelmäßige Updates über das externe Zubehör-Framework bereitstellen muss.
* Bluetooth-Central-Die App funktioniert mit einem Bluetooth-Zubehör, das Updates über einen normalen Zeitplan über das Core Bluetooth Framework liefern muss.
* Bluetooth-Peripheriegerät-Die App unterstützt Bluetooth-Kommunikation in Peripheriemodus über das Core Bluetooth-Framework.

Sie können nur für die Erreichbarkeit überprüfen wieder erneut eingeben Vordergrund.

+0

+1 für die detaillierte Erklärung ... –

Verwandte Themen