2015-11-17 12 views
7

Ich möchte Anwendung wie UBER entwickeln, in dem ich verfügbare Taxis in der ausgewählten Region anzeigen und aktualisieren muss, wie die Taxis eingestellt werden, verfügbar, nicht verfügbar. Art der automatischen Aktualisierung. Das Aufrufen des Webdienstes im Hintergrund nach einem regelmäßigen Zeitintervall ist keine gute Option. Kann mir jemand einen besseren und schnelleren Weg vorschlagen, dies zu erreichen.Echtzeit-Synchronisierung

Dank

+0

Sie müssen daran denken, dass UBER 2 Anwendungen verwendet. Ein Publikum und eins für den Fahrer. Ich weiß nicht genau, wie sie die Synchronisierung machen, aber ich würde für Driver App gehen -> Position auf Server aktualisieren -> Server senden stillen Push mit Informationen an registrierte öffentliche App in der Nähe des Ortes. – KIDdAe

Antwort

6

Push-

  • Verwenden sockets, wenn die Anwendung ausgeführt wird. Dadurch erhalten Sie sofortige Updates.
  • Verwenden Sie Push notifications, wenn die App nicht ausgeführt wird (Benachrichtigungen für wichtige Änderungen verwenden), und ignorieren Sie diese Benachrichtigungen, wenn die App bereits ausgeführt wird, zugunsten von Sockets.

Pull

  • Verwenden NSURLSession Ihrem lokalen DB mit einer gewissen Regelmäßigkeit zu aktualisieren. Dies ist sehr widerstandsfähig gegenüber Netzwerkfehlern.

eine Kombination von Ansätzen verwendet werden, da Geschwindigkeit und Robustheit gegenseitig ausschließen. Letztendlich besteht Ihr Ziel darin, Ihre lokale Datenbank mit der Datenbank Ihres Servers synchron zu halten und interne Nachrichten bei Änderungen der Daten auszulösen. Keine kleine Aufgabe, daher der Firebase answer.

+0

Ich mag Ihren Ansatz und möchte etwas ähnliches bauen, aber nicht für Taxis. Was meinst du mit einer "lokalen DB"? Beziehen Sie sich auf etwas wie CloudKit? –

+1

Mehr wie https://www.couchbase.com/, entwickelt, um Client und Server synchron zu halten. _Couchbase Server 4.5 ermöglicht es Ihnen, mobile Apps zu erstellen, die eine großartige Benutzererfahrung bieten, indem Sie auf eine lokale, eingebettete Datenbank zugreifen, die automatisch mit der Cloud synchronisiert._ – SwiftArchitect

0

Der mit Firebase einfachste Weg ist zu arbeiten. Seine No SQL-Datenbank und Sie werden sofort aktualisiert, wenn Sie etwas ändern.

This Video wird Ihnen zeigen, wie schnell Sie ohne Schleife aktualisieren können, um Daten in der Anwendung zu aktualisieren.

Fragen Sie mich bezüglich Firebase.

+0

Ich denke, die Frage ist: Wie meldet Firebase die Geräte – SwiftArchitect

+0

Die Antwort ist die Art, wie XMPP funktioniert (SOCKETS). Ich zeige dir einfach den einfachen Weg Firebase. –

0

Ich würde vorschlagen, Sie werfen einen Blick auf CloudKit. Es gibt verschiedene Gründe.

  1. Wenn Sie sich entscheiden, nur eine App zu bauen und irgendwie Funktionalität haben Fahrer, die von den Benutzern unterschiedlich ist (vielleicht von den Fahrern Register mit und Sign-in), dann kann die App gemeinsam genutzter Daten veröffentlichen zu einer öffentlichen Online-Datenbank zugänglich für alle Benutzer. Sie können in diesem Szenario die Informationen verwenden, um lokale Benachrichtigungen bei Bedarf zu veröffentlichen.
  2. Wie iOS aktualisiert werden Sie nicht auf Drittanbieter-Bibliotheken
  3. abhängig sein, wenn Sie einen Treiber App und einen separaten Benutzer App erstellen entscheiden, Wolkenjunge ermöglicht es Ihnen, Daten über diese Anwendungen zu teilen.
  4. Apple befasst sich mit der Sicherheit und Verfügbarkeit.
  5. Insgesamt ist der Prozess sehr einfach zu implementieren.
  6. Sie können die lokalen Benachrichtigungen mit der öffentlichen Datenbank zu planen Erinnerungen, Benutzerbenachrichtigungen usw.
  7. CloudKit, wenn es richtig gemacht wird im Wesentlichen frei sein. Übertragen Sie einfach CKassets anstelle von Rohdaten und Ihre Übertragungs-/Speichergrenzen werden vernachlässigbar.
  8. Sie können auch auf Ihre CloudKit-Datenbanken von externen Webdiensten zugreifen, wenn Sie die Daten weiter ausbauen möchten. automatisch

NB

  • können Sie Wolkenjungen Abonnements verwenden Benutzerinformationen zu synchronisieren - Wie in den Kommentaren darauf hingewiesen, dies ist neue Technologie. Es ist in der zweiten Generation und ich bevorzuge es, denn wenn man es kreativ verwendet dann können Sie das externe Push-Benachrichtigung Verhalten zusammen mit Hintergrund-Unterstützung zu simulieren. CloudKit beseitigt die Notwendigkeit eines Webservers von Drittanbietern, von dem aus die externen Benachrichtigungen gepusht werden (da die eigentlichen Benachrichtigungen durch Schreiben in die gemeinsame Datenbank erfolgen).

  • Überprüfen Sie meine detailed answer on SO für die gemeinsame Nutzung der Daten zwischen Anwendungen mit CloudKit. Hier ist ein Link zu einigen CloudKit videos, die weiter beschreiben, wie CloudKit funktioniert. Apple hat viele documentation und sampleprojects zur Verfügung. Sie können die Entwicklerwebsite für more info on CloudKit überprüfen.

    CloudKit Quick Start

    +0

    Ich würde mit CloudKit einverstanden sein (aber man kann argumentieren, dass ich ein Interesse daran habe eigene Antwort), aber ich fühle, dass wenn es so reaktionsschnell wie iCloud ist, es alles andere als zuverlässig ist. Bitte beweisen Sie mir falsch. – SwiftArchitect

    0

    können Sie stille Push-Benachrichtigungen verwenden, um Ihre Karte mit aktualisiertem Taxi Standorte zu aktualisieren.