Habra Glass - wie man einen geosozialen Dienst leistet






    Fast jeder Dienst kann geosozial gemacht werden. Das heißt, Erweitern Sie die Funktionalität über das übliche Internet hinaus und geben Sie Servicebenutzern die Möglichkeit zur Interaktion im wirklichen Leben.

    Die erste Frage, die sich stellt, ist, ob Benutzer es brauchen. Die Antwort hängt sehr davon ab, um welche Art von Service es sich handelt. Zum Beispiel sind Dating-Dienste sehr beliebt, weil sie viele Probleme lösen. Sie ermöglichen es denjenigen, die sich kennenlernen möchten, Zeit bei der Suche nach einem Partner zu sparen. Sie helfen, Bescheidenheit zu überwinden und viele Konfliktsituationen zu vermeiden.

    Wenn Sie über etwas Interessantes nachdenken, kann Ihnen der geosoziale Service von Habrahabr helfen?

    Optionen für Datenschutzeinstellungen:
    1) Für alle sichtbar - für diejenigen, die maximale Kommunikation wünschen
    2) Nur für diejenigen Mitglieder der Habrasociety sichtbar, die mehrere gemeinsame Hubs mit mir abonniert haben - eine moderate Option.
    3) Nur für diejenigen sichtbar, für die ich abonniert bin und die gleichzeitig für mich abonniert sind - ein Minimum an Kontakten mit maximalem gegenseitigem Interesse.

    Ich denke, dass mit diesem Schema fast jeder eine geeignete Option finden wird. Übrigens bin ich gegen das Benutzerpaket auf der Karte, wie es einige Dienste tun. Es ist viel interessanter, wenn Benutzer einfach über ihre zufälligen Begegnungen informiert werden. Und um eine echte Effektivität zu erreichen, sollte der Standort nicht auf Abruf (nach dem Prinzip der Chekins), sondern online durchgeführt werden.

    Technische Umsetzung


    Um den Dienst geosozial zu gestalten, müssen Sie Clientanwendungen für mobile Geräte entwickeln und den Geolokalisierungsdienst auf der Serverseite implementieren.



    Funktionen des Geolocation-Dienstes:
    1) Validierung von Daten, die von Geräten stammen
    2) Suche nach Besprechungen (Nähe von Geräten)
    3) Analyse der Datenschutzeinstellungen von Benutzern
    4) Informieren des Dienstes und interessierter Benutzer über die Besprechung.
    5) Zusätzliche Funktionen, die für die Benutzerinteraktion erforderlich sind, z. B. ein Modul für Chats usw.

    Funktionen mobiler Clientanwendungen
    1) Geolocation
    2) Übertragung aktueller Koordinaten an den Server
    3) Benachrichtigung der Benutzer über Besprechungen und andere Ereignisse
    4) Zusätzliche Funktionen, die für die Benutzerinteraktion erforderlich sind, wie z. B. Chats usw.

    Nuancen


    Sie müssen verstehen, dass die Implementierung einer vollwertigen Client-Anwendung ziemlich zeitaufwändig ist. Und wenn wir über die Implementierung von Client-Anwendungen für verschiedene Plattformen sprechen, steigen die Kosten noch mehr. Sie können die Aufgabe vereinfachen, indem Sie beispielsweise HTML 5 für das Layout der Benutzeroberfläche von Anwendungen verwenden. Das Standortmodul muss jedoch nativ ausgeführt werden.

    Der Standort sollte energieeffizient sein. Dieses Problem lässt sich am einfachsten unter Android beheben. Sie können den Stromverbrauch regulieren, indem Sie einen Smart Location-Algorithmus schreiben. Das heißt, In bestimmten Fällen, um eine genaue, aber in Bezug auf die Energiekosten kostspielige GPS-Koordinate zu erhalten. Wenn sich in der Sichtbarkeitszone WLAN befindet, verwenden Sie es natürlich als Standort (der Fehler beträgt 50 bis 100 Meter, fast ohne Energieverbrauch). Wird manchmal zur Bestimmung von Zellkoordinaten verwendet. Wir erhalten einen ausreichend großen (aber in einigen Fällen akzeptablen) Fehler, jedoch ohne Energieverbrauch.

    Sie müssen auch berücksichtigen, dass das Telefon, das den Standort angibt, zu diesem Zeitpunkt nicht in den Ruhezustand wechselt. Und sein Prozessor verbraucht auch Energie. Wenn wir aufwachen, um einen Ort zu finden, können wir das nicht immer so schnell tun, wie wir wollen. Das GPS-Modul, das Informationen über die Satelliten erhalten hat, gibt uns die Koordinaten sehr schnell, die Initialisierung kann jedoch einige Minuten dauern.

    Ein weiteres Problem besteht darin, dass die nativen Ortungsdienste des Geräts manchmal große Fehler verursachen können. Das heißt, Keine Koordinate mit einem großen Fehler, sondern einfach eine falsche Koordinate, die sich leicht als Kilometer von der tatsächlichen entfernt herausstellen kann. Auf der Serverseite ist es nützlich, Aufzeichnungen über solche "Schwarzen Löcher" zu führen, um die Zuverlässigkeit der Spuren zu erhöhen.

    Es können große Energieeinsparungen erzielt werden, einschließlich verschiedener Standortmodi für Fälle:
    - Das Gerät ist stationär
    - Das Gerät bewegt sich mit niedriger Geschwindigkeit
    - Das Gerät bewegt sich schnell

    In diesem Fall gibt es zwei Hauptideen. Wenn das Gerät stationär ist, werden keine Ereignisse generiert. Wenn sich ein Gerät schnell bewegt (eine Person in einem Auto), gibt es viele Ereignisse, aber der Benutzer kann ohnehin nicht darauf reagieren.

    Es wäre auch schön, das Senden von Koordinaten mit Geräten zu synchronisieren. Das heißt, Es ist notwendig, die Zeit der Clients mit der Serverzeit zu synchronisieren. Dies ist wichtig für das Bewegen von Objekten. Beispiel - Zwei Personen fahren mit einer Straßenbahn auf benachbarten Sitzen, aber das Senden von Koordinaten durch ihre Geräte ist nicht synchron. Dann empfängt der Server krampfhafte Offsets des einen oder anderen Geräts und zeichnet die Besprechung nicht auf ...
    Das Senden einer Pauschale für alle Geräte ist ebenfalls falsch. Auf diese Weise werden Spitzenlasten auf dem Server erstellt. Das heißt, Sie müssen über einen Algorithmus nachdenken, der die Zeit des Sendens von Koordinaten mit den aktuellen Koordinaten verknüpft.

    Wenn wir jedoch nicht nur GPS verwenden, um die Koordinaten zu ermitteln, sondern auch das Track-Gerät betrachten, werden wir unzufrieden sein. Die Bewegung sieht aus wie ein paar Sprünge vorwärts, jetzt rückwärts, jetzt rechts und dann links. Es ist schön darüber nachzudenken, wie die vom Gerät kommenden Koordinaten verarbeitet werden sollen, da sich der Fehler ständig ändert. Wenn jemand interessiert ist, kann ich den Algorithmus in einem der folgenden Artikel beschreiben.

    Dinge mit Standort unter iOS sind schlimmer. Wir haben nur die Möglichkeit, eine Koordinate mit einer bestimmten Genauigkeit anzufordern, und es gibt keine Möglichkeit zu steuern, was bedeutet (wie lange und mit welchem ​​Energieverbrauch), dass sie empfangen wird. Darüber hinaus gibt es keine einfache Möglichkeit, das Telefon aus dem Ruhemodus zu aktivieren. Und wenn Sie nicht in diesen Modus wechseln, verbraucht der Prozessor viel Energie (viel mehr als bei modernem Android). Es gibt bestimmte Möglichkeiten zur Lösung energieeffizienter Standortprobleme, die Implementierung ist jedoch recht kompliziert. Die einzige einfache Option, die in vielen Fällen ausreicht, ist die Verwendung von Geofences.

    Symbian Der vollständige Standort ist nur auf Geräten mit einem Betriebssystem von mindestens S60 möglich. Darüber hinaus muss das Gerät über WLAN und GPS verfügen (und es gibt nur sehr wenige solcher Modelle), da sonst der Standortfehler sehr groß ist. Es wird Probleme mit der Autostart-Anwendung geben. Der Aufwand für die Entwicklung einer Anwendung für Symbian ist um ein Vielfaches höher als beispielsweise für iOS.

    Windows Phone Die 7. Version dieses Systems erwies sich anscheinend als ziemlich schwer für mobile Geräte, und die Möglichkeiten für einen vollwertigen Hintergrundstandort wurden dort nicht realisiert. Die 8. Version machte einen großen Schritt nach vorne. Es wurde eine umfangreiche Geolocation-API veröffentlicht, die eine Kreuzung zwischen Android und iOS darstellt. Vergessen Sie jedoch nicht die Formel:
    "Neues Betriebssystem" + "Geräte verschiedener Hersteller" = "unvermeidliche Fehler".
    Dies hat möglicherweise nicht den besten Einfluss auf die Komplexität der Entwicklung.

    Natürlich müssen Sie einen Client für Google Glass entwickeln. Ich kann hier nichts sagen, weil ich es nicht in meinen Händen gehalten habe. Und im Allgemeinen denke ich, ist das ein Witz?

    Benachrichtigung


    In bestimmten Fällen müssen Benutzer über Besprechungen und andere Ereignisse informiert werden. Für jede Plattform müssen Sie eine separate native Implementierung durchführen. In unserem Fall besteht jedoch die einmalige Möglichkeit, Benachrichtigungen nicht über die Dienste von Anbietern, sondern über unser eigenes Feedback zu organisieren.

    Wenn das Gerät über TCP eine Verbindung zu unserem Server herstellt, können wir ihn jederzeit während der Sitzung kontaktieren. Selbst wenn das Gerät uns UDP-Pakete sendet (was vernünftig ist, wenn wir über die Last nachdenken), haben wir etwas Zeit, um ein Antwortpaket zu senden. Diese Zeit hängt vom Internetprovider ab, beträgt jedoch in jedem Fall mindestens 10 Sekunden.

    Aggregatoren


    Sie können Aufwand und Geld sparen und die Dienste von Aggregatoren nutzen, die APIs für die Integration von Diensten von Drittanbietern bereitstellen und Probleme mit dem Standort mobiler Geräte unabhängig lösen. Sie bieten vorgefertigte native Vorlagenanwendungen für verschiedene Plattformen mit bereits implementierten Funktionen für die Kommunikation der Benutzer, deren Anzeige auf einer Karte (falls erforderlich) und vieles mehr sowie die Möglichkeit, die für jeden Dienst spezifischen Funktionen über eine Webansicht einzubetten.



    PS Dieser Artikel beschreibt nur allgemeine Ideen und Prinzipien für die technische Implementierung von geosozialen Diensten. In Bezug auf Habrahabr können Sie sich natürlich viele weitere interessante und nützliche Funktionen einfallen lassen. Ich würde gerne Ihre Meinung erfahren, liebe Habraviten.

    Jetzt auch beliebt: