Ankündigung

Einklappen
Keine Ankündigung bisher.

Anzeige-Probleme auf Apple-Geräten seit smartVISU 2.8

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

    Anzeige-Probleme auf Apple-Geräten seit smartVISU 2.8

    Moin,

    ich bin der neue :-)

    Ich nutze seit geraumer Zeit smartVISU in der Version 2.7 in Verbindung mit FHEM und dem entsprechenden FHEM-Treiber. Bisher alles einwandfrei :-)
    Nun habe ich auf die 2.8 aktualisiert. Prinzipiell funktioniert auch hier alles gut, allerdings habe ich ein Anzeigeproblem auf Apple-Geräten.

    Und zwar sieht alles völlig normal aus, wenn ich eine smartVISU Seite ganz normal in Safari öffne. Wenn ich allerdings einen Link zu dieser Seite auf dem Homescreen erstelle und über diesen gehe (dieser öffnet dann Safari im Vollbild), treten Probleme auf.

    Um zu demonstrieren was ich meine, habe ich eine Testseite und zwei Screenshots erstellt. Die Testseite enthält folgenden Code:
    Code:
    {% block content %}
    
    basic.switch: {{ basic.switch('work_light_ceiling_sw',  'work_light_ceiling_sw', 'light_light.svg', 'light_light.svg') }}
    <br/>
    basic.dual: {{ basic.dual('work_light_ceiling_sw_dual', 'work_light_ceiling_sw', 'light_light.svg', 'light_light.svg') }}
    <br/>
    basic.symbol: {{ basic.symbol('work_light_ceiling_on',  'work_light_ceiling_sw', '', 'light_light.svg', '1', 'or', 'icon1') }}
    <br>
    basic.symbol: {{ basic.symbol('work_light_ceiling_off',  'work_light_ceiling_sw', '', 'light_light.svg', '0', 'or', 'icon0') }}
    <br/>
    basic.float: {{ basic.float('sleep_temp_cur', 'sleep_temp_cur', '°') }}
    {% endblock %}
    Und so sieht das in Safari aus (OK!):



    Im Vollbild Modus per Homescreen Link sieht es allerdings so aus:



    Wie man sieht, werden bei basic.switch und basic.dual die Icons sowohl im icon0 als auch im icon1 Style angezeigt. basic.symbol funktioniert wie erwartet (Wert des GADs ist zum Zeitpunkt des Screenshots '1'). Beim basic.float wird gar nichts angezeigt.

    Wie gesagt sind das genau dieselben Seiten ohne Änderung. Eine Idee woran das liegen könnte? Mit der 2.7 hatte ich diese Probleme nicht...
    Im FHEM Forum gibt es noch andere User die das gleiche Problem bestätigen können...

    #2
    Kann ich hier (iOS 10, verschiedene Geräte) nicht nachvollziehen, die Umstellung hat (bis auf die SVG-Geschichte ) problemlos geklappt.

    Das zweite Bild sieht aber aus, als wenn er keine Daten bekäme...

    Tipp ins Blaue: wie läuft deine Namensauflösung? Probier mal den vollen Hostnamen mit Domain (ggf. auch in den SV-Einstellungen!)

    Kommentar


      #3
      Ich kann das Problem bestätigen, tritt bei mir auch auf. Seiten aus Safari aufgerufen laufen einwandfrei, auch Umschalten zwischen Seiten. Als Fullscreen-Seite direkt auf ein Icon gelegt fehlen früher oder später die Widgets bzw. Daten.
      Sowohl auf einem alten iPad 3 als auch aktuellem iPhone 6s nachvollziehbar, mit unterschiedlichen iOS-Versionen.

      Gruß,
      Thomas

      P.S.: Ich erinnere mich grob daran, dass ich bei SV2.6 (?) mal ein ähnliches Problem mit der Vollseiten-Ansicht auf iOS hatte und einen Workaround eingebaut hatte, den ich auch hier im Forum gefunden hatte. Allerdings kann ich mich nicht mehr daran erinnern, was überhaupt das Grundproblem war, ob das hier zutrifft und für 2.8 überhaupt noch anwendbar ist, aber ich versuch mich mal daran...

      Kommentar


        #4
        Auch wenn das bei mir nicht FHEM und SmartVISU 2.8 war, sondern smarthome.py und SmartVISU 2.8 (hatte ich vergessen zu erwähnen), die iOS-Problematik ist dieselbe, aber ich bin inzwischen einen Schritt weiter:

        *Irgendwo* scheint iOS für die Seiten auf dem Home-Bildschirm Javascript zu cachen (?!?),

        Aufgefallen ist mir das dadurch, dass ich eine "Protocol Mismatch"-Meldung bekomme, deren Wortlaut aus dem Smarthome-Treiber in SV2.7 stammt, in SV2.8 aber anders aussehen sollte und serverseitig überhaupt nicht mehr vorhanden ist!

        Ein Löschen des Safari-Cache oder der Verknüpfung auf dem Homebildschirm mit anschließendem Neu-Anlegen hat nichts gebracht, auch Neustarts des Telefons nicht.

        Ich habe mir testhalber serverseitig einfach einen Symlink /var/www/smartVISUtest angelegt, der auf /var/www/smartVISU zeigt. Unter iOS dann eine Verknüfpung auf den Symlink statt die ursprüngliche URL angelegt. Und siehe da, auf einmal geht es.

        In meinem Fall also ganz klar kein smartVISU-Problem, sondern iOS...

        Gruß,
        Thomas

        P.S.: Google bestätigt die Homescreen-Java-Cache-Problematik:
        http://stackoverflow.com/questions/8...the-homescreen
        Zuletzt geändert von blobo; 18.10.2016, 13:05.

        Kommentar


          #5
          Jetzt verstehe ich auch endlich, weshalb das umbenennen der index.html wie hier beschrieben funktioniert. Dadurch werden die gecachten Dateien neu geladen.

          Ich halte das ebenfalls für einen Bug in iOS. Falls es einen sinnvollen Workaround gibt, würde ich diesen aber natürlich in die smartVISU einbauen.

          Kommentar


            #6
            Hi
            so melde mich als Threadersteller auch mal wieder zu Wort- danke für die Rückmeldungen.
            Also am DNS lag es nicht, es scheint wirklich das zuletzt hier genannte Problem zu sein. Ich habe mir jetzt ebenso einen Symlink auf dem Server angelegt, und verwende den Symlink in der Homescreen-Verknüpfung. Funktioniert und löst das Problem für mich!
            Was mir nicht so ganz klar ist, wieso ich das Problem mit smartVISU 2.7 nicht habe (ebenso mit iOS 10 getestet)...

            Ob man da jetzt smartVISU-seitig was machen kann, kann ich nicht beurteilen- dazu sind meine javascript Kenntnisse zu schwach... das was da in dem Stackoverflow Link steht klingt auf jeden Fall nach Ansatzpunkten...

            Danke nochmal!

            Kommentar


              #7
              Das Problem ist, dass die Scripts aus dem Cache geladen werden. Bei dir wird also das HTML von 2.8 geladen, aber die Javascripts von 2.7. Deshalb funktioniert es nicht.
              Als du damals auf 2.7 umgestiegen bist, gab es das Problem vielleicht noch nicht oder du hast den Pfad geändert.

              Kommentar


                #8
                WARNUNG: Bitte vorerst nicht nachmachen, außer Ihr wisst wie Ihr aus der Nummer wieder rauskommt ;-)
                Mit dem Manifest wird auch der Rest der Seiten gecasht und erst nach Ändern der Manifest-Datei wieder neu geladen.
                Siehe Post weiter unten!


                Ich habe noch etwas recherchiert und auch gebastelt. Das Ganze ist wohl kein wirklicher Bug, sondern HTML5-konformer "Offline Application Cache", der bei Verknüpfungen auf dem Homescreen wohl standardmäßig genutzt wird, solange der Webserver nix anderes vorgibt. Gedanke dahinter: Offline-Verfügbarkeit von Web-Apps

                Zwei hilfreiche Seiten dazu:
                http://www.selfhtml5.org/2014-html5-...ication-cache/
                https://developer.apple.com/library/...tionCache.html

                Mittels manifest-File kann ich z.B. auch Chrome auf meinem PC dazu bringen, Dateien lokal zu cachen.

                Mit etwas Gebastel lässt sich das Ganze auch serverseitig lösen. Ich bin nach einer Kombination aus beiden Links vorgegangen:

                1) Ein Manifest-File namens cache.manifest im Root-Folder von smartVISU erstellt, Content:
                CACHE MANIFEST

                CACHE:

                NETWORK:
                *

                2) Die .htaccess Datei mit "AddType ..." angelegt, bin mir aber nicht sicher ob das nötig gewesen wäre

                3) In /pages/base/root.html ganz oben auf das Manifest-File verwiesen "<html manifest="cache.manifest" >"

                4) Dann hab ich auf meiner index.html noch den Javascript-Codeschnipsel (function updateSite vom zweiten Link) zum Cache-Update eingebaut. Könnte man natürlich auch woanders einbauen, aber ich wollte möglichst wenig an smartVISU selbst "verpfuschen". :-)

                Danach geht es nun auf iPhone 4S, 6S und meinem guten alten iPad 3.

                Das war schnelles Gebastel, ich bin eigentlich in der Welt der Kerneltreiber oder ähnlichem unterwegs und bzgl. Web-Programmierung nicht unbedingt fit.
                Vielleicht hilft das aber bezüglich "Workaround".

                Gruß,
                Thomas
                Zuletzt geändert von blobo; 18.10.2016, 21:09.

                Kommentar


                  #9
                  Ich schau mir das bei Gelegenheit mal an. Soweit ich gelesen habe, führt das Editieren des manifest-Files eh zum Neuladen (auch ohne tatsächluche Änderung). Deshalb lässt sich wohl aus deinem Beispiel noch nicht auf ein langfristiges Funktionieren schliessen.
                  Das Cachen an sich ist natürlich kein Bug. Aber IMHO müsste der Cache spätestens beim Löschen und Neuanlegen des Homescreen-Links geleert werden.

                  Kommentar


                    #10
                    Zitat von smai Beitrag anzeigen
                    Das Problem ist, dass die Scripts aus dem Cache geladen werden. Bei dir wird also das HTML von 2.8 geladen, aber die Javascripts von 2.7. Deshalb funktioniert es nicht.
                    Als du damals auf 2.7 umgestiegen bist, gab es das Problem vielleicht noch nicht oder du hast den Pfad geändert.
                    Ah, jetzt hab ichs kapiert, danke.
                    Dass es mit 2.7 funktioniert hat ist dann klar, weil das war meine erste smartVISU Version :-)

                    Kommentar


                      #11
                      Zitat von smai Beitrag anzeigen
                      Deshalb lässt sich wohl aus deinem Beispiel noch nicht auf ein langfristiges Funktionieren schliessen.
                      KORREKTUR:
                      Du hast Recht :-)

                      Das mit der NETWORK Direktive klappt nicht wie gewünscht, nun wird auch der Rest der Seiten (HTML) erst nach Ändern des Manifests neu geladen.
                      Immerhin lässt sich bei Chrome der App Cache händisch löschen...
                      Zuletzt geändert von blobo; 18.10.2016, 21:07.

                      Kommentar


                        #12
                        Dann klingt das ja vielversprechend.
                        Aber heisst "nicht gecached" tatsächlich nicht im Browsercache oder nur nicht in diesem Homescreen-Link-Cache? Weil im Browser soll es ja aus Performancegründen durchaus gecached werden. Nur halt eben nach den üblichen http-Regeln, was ja heissen würde, dass es bei Änderungen neu geladen wird.

                        Kommentar


                          #13
                          Asche auf mein Haupt, siehe Edit weiter oben.

                          Zumindest Chrome auf meinem PC ignoriert die NETWORK Direktive in der Manifest-Datei und cached auf einmal alles inklusive HTML im App Cache.
                          Sollte meiner Meinung nach nicht so sein, ist aber AUA.

                          D.h. jegliche Änderungen (auch HTML) werden erst nach einer Änderung der Manifest-Datei neu geladen. Immerhin lässt sich in Chrome der App-Cache über chrome://appcache-internals/# löschen.

                          So geht's also schon mal NICHT, zumindest ist das noch nicht rund.

                          Kommentar


                            #14
                            Hallo Zusammen,

                            ich stehe vor dem selben Problem, es klappt bei mir trotz manifest nicht. Hat das jemand schon entdgültig lösen können? Ich habe jetzt übergangsweise einen neuen Pfad auf dem Webserver für die Visu gewählt, das klappt dann natürlich.

                            Gruß Felix

                            Kommentar


                              #15
                              Ich hab zwischenzeitlich keine Zeit mehr investiert, nachdem ich am Manifest-Versuch gescheitert war und die Ursache dafür nicht finden konnte. Mit dem Symlink gibt's ja zumindest nen funktionierenden Workaround.

                              Kommentar

                              Lädt...
                              X