Ankündigung

Einklappen
Keine Ankündigung bisher.

App Anbindung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • App Anbindung

    Hallo Leute,

    das ist wohl schon eine ältere Frage, aber ich komme einfach nicht so richtig dahinter.

    Also folgendes: Ich habe eine auf PHP basierte Webseite, bzw. Webanwendung und möchte diese nun an eine (Android/iOS- ) App anbinden.

    Die Frage ist jedoch wie mache ich das am besten? Schließlich möchte ich nicht alle paar Sekunden beim Server Anfragen, ob es etwas neues gab. Der Endbenutzer mit seinen 150 MB Datenvolumen Limit wird sich freuen...

    Es müsste also eine eventbasierte Lösung sein, aber wie?! Sockets aufbauen vom Server zum Smartphone? Ich meine zum Beispiel K9-Mail kann das auch, wenn der E-Mailserver eventbasiert ist im Protokoll, dann sollte das hier auch möglich sein.

    Ich würde mir das so vorstellen: Socket Anbindung serverseitig und eine regelmäßige Antwort vom Client, ob der denn noch da ist. Die regelmäßige Antwort könnte so alle 10 Minuten sein.

    Die Socket Anbindung auf PHP Seite würde ich mit RabbitMQ lösen, damit der Benutzer, der das Event ausgelöst hat, trotzdem für sich schon die Seite angezeigt bekommt, während alle anderen über die Änderung informiert werden.

    Hat da jemand eine Idee?

    Und nein, ich möchte keine native HTML5 App machen. Ich bin versiert genug um Java zu benutzen, bzw. Swift zu lernen.


    MFG

    derwunner

  • #2
    Mein erster Gedanke wäre Googles Firebase Cloud Messaging. Per HTTP oder XMPP können plattformübergreifend Nachrichten zwischen den Clients versendet werden. Der Firebase-Server ist dabei der erste Empfänger der Nachrichten und verteilt sie dann an die angebundenen Clients (irgendwie so war das, ist ein bisschen her), die Clients müssten also nicht nachfragen sondern die Nachrichten werden zu ihnen gepusht.

    WebSocket ist sicher auch eine Möglichkeit, not sure. Glaube hier kommt es dann auch auf die genauen Anforderungen an. Wenn du mit sehr vielen Clients rechnest würde ich Firebase den Vorzug geben, allein weil du dich dann nicht um die Server-Infrastruktur kümmern musst.
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      VPh Ja, Firebase Cloud Messaging klingt schon gut. Und wäre eventuell auch eine Möglichkeit. Aber mich interessiert eigentlich mehr die Technik dahinter, wie solche push Nachrichten entstehen können, damit man das ganze auch ohne Firebase abbilden könnte.

      Ansonsten müsste man halt einen ServerSocket auf App Seite erstellen, der auf eingehende Verbindungen wartet. Das kann man ja auf ein paar statische IP-Adressen beschränken, die eindeutig meiner Webseite zuordenbar sind.

      Edit: Ok, bei Android geht es anscheinend nicht anders, man muss wohl den Google Firebase Cloud Messaging Dienst nutzen. Dafür ist ein Google Account notwendig, aber den hat praktischerweise eh jeder, der ein Android Smartphone hat. Also von daher ist das schon ok. Skalierbar scheint das Teil auch zu sein, von daher nahezu perfekt.

      Edit 2: Das scheint auch mit PHP möglich zu sein, da man Firebase Cloud Messaging ganz einfach per cURL ansprechen kann. Würde den cURL aus Performancegründen in eine RabbitMQ Message verwandeln, damit es entkoppelt vom Webserver Prozess ist, also vom eigentlichen Erzeuger. Denn der bekommt die Nachricht so oder so ausgeliefert und die Webseite kann schon ausgeliefert werden, während alle anderen noch informiert werden. Das müsste man mal längere Zeit testen, wie hoch hier die Fail Raten der RabbitMQ Exchange sind.

      Kommentar


      • #4
        Zitat von derwunner Beitrag anzeigen
        Dafür ist ein Google Account notwendig
        Für dich als Betreiber, ja.
        Für den normalen User der deinen Dienst nutzen will, nein. Da kann die Authentifizierung auch anders erfolgen https://firebase.google.com/docs/auth/

        Ansonsten müsste man halt einen ServerSocket auf App Seite erstellen, der auf eingehende Verbindungen wartet. Das kann man ja auf ein paar statische IP-Adressen beschränken, die eindeutig meiner Webseite zuordenbar sind.
        Und beim App-Start/Login müsstest du deinem Webserver erst einmal die aktuelle IP des Telefons mitteilen, damit der auch weiß wo die Nachrichten landen müssen.
        Firebase nimmt da schon einiges an Arbeit ab.
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #5
          Zitat von VPh Beitrag anzeigen
          Für dich als Betreiber, ja.
          Für den normalen User der deinen Dienst nutzen will, nein. Da kann die Authentifizierung auch anders erfolgen https://firebase.google.com/docs/auth/
          Ich meinte damit, dass man um eine Android Smartphone betreiben zu können, einen Google Account braucht. Das ist das erste was Android von Dir wissen will, wenn Du das Smartphone zum ersten Mal einschaltest.

          Kommentar


          • #6
            Die Frage ist doch: was genau tut die App? Das Abrufen von Content lässt sich in den meisten Fällen über eine REST-API lösen. Wenn du Realtime-Features hast, dann müssen eben Sockets oder eine Plattform wie Firebase her.

            Zitat von derwunner Beitrag anzeigen
            Ich meinte damit, dass man um eine Android Smartphone betreiben zu können, einen Google Account braucht. Das ist das erste was Android von Dir wissen will, wenn Du das Smartphone zum ersten Mal einschaltest.
            Dass dein User einen Google-Account hat steht ja in keinem Zusammenhang mit deinem Vorhaben / Firebase-Account. Außer du hast damit gemeint, dass *du* ein Android hast und *du* somit bereits einen Google-Account hast
            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

            Kommentar


            • #7
              Hier eine kurze EInleitung zum Thema: https://www.android-user.de/per-push...-handy-senden/

              Kommentar

              Lädt...
              X