2013-04-10 6 views
20

Im Moment kenne ich nur WURFL von Scientiamobile und ein paar andere. Diese Bibliotheken oder Datenbanken erzählen eine ganze Reihe von Dingen über das Gerät, aber keine von ihnen kann eindeutig darauf hinweisen, dass Sie keine CSS-Übergänge oder andere Arten von Animationen verwenden sollten, auch wenn das Gerät dies unterstützt läuft reibungslos und das ist mein Hauptanliegen bei der Erstellung von mobilen Web-Apps.Wie erkennen Sie mobile Geräte mit niedriger Spezifikation sinnvoll?

Ist es technisch möglich, Geräte über die Datenbank "WURF" in diese Richtung zu "klassifizieren"? Und welche Gerätefunktionen sollte ich verwenden, um Geräte in Bezug auf Grafikleistung als "schnell" einzustufen?

Schließlich brauche ich nur eine Bewertung des Geräts von 1-5, um zu entscheiden, welche GFX-Operationen ich verwenden kann.

Nun, jeder Gedanke ist willkommen. Es stellt sich heraus, dass es ein echtes Hirngespinst ist, und die Forschungen im Internet brachten nichts Nützliches hervor, außer vielen Daten über Geräteobergrenzen.

-Update-1: Ich habe eine Antwort von ScientiaMobile: „wir um mit der Idee von irgendeiner Form von Javascript-Performance-Index wurden spielen (möglicherweise auf einem der bestehenden Benchmarks basieren), die bestimmte Anzeichen von geben könnte aber wir sind immer noch nicht da. Das Problem ist komplex. "

-Update-2: Die größten Engpässe wir in der mobilen Web-Anwendungen entdeckt

  1. Animation Macht
  2. PNG Transparenz
  3. Text und Feld Schatten
  4. Bild Ändern der Größe

Für uns ist es wirklich genug, um herauszufinden, dass wir diese deaktivieren müssen Features, wie sie jede Anwendung in die Knie zwingen können. Möglicherweise gibt es auch andere Ansätze.

Vielen Dank.

+2

Dies ist ziemlich interessant, und nicht wirklich von jemandem angesprochen, so weit eine schnelle Google-Suche zeigt. Nur ein wilder Gedanke: Da Sie sich in das Ereignis "animationend" einklinken können, könnten Sie versuchen, einen kleinen Benchmark einzurichten: einen css-Übergang (auf einer unsichtbaren Ebene) für eine bestimmte Zeit (sagen wir 500ms) und gleichzeitig einen Timer zu halten Zeit. Wenn Sie dann an das Ereignis "animationend" binden, prüfen Sie, ob die anfängliche css-Übergangszeit ungefähr gleich der gemessenen Ausführungszeit ist (der Timer) ...? –

+0

Ich stimme zu, ein versteckter Benchmark könnte die Animationsleistung mehr oder weniger bestimmen. Der andere große Engpass ist PNG-Transparenz. Ich habe gesehen, dass Android-Geräte auf diese Weise in die Knie gegangen sind und ohne Transparenz viel schneller arbeiten. – xamiro

+0

Können Sie einigen Geräten sagen, wo CSS-Übergänge funktionieren und reibungslos funktionieren und einige CSS-Übergänge funktionieren, aber nicht reibungslos funktionieren? Es wäre schön, hier ein Beispiel zu haben. Zielen Sie auch auf ein paar bestimmte Geräte oder möchten Sie eine Lösung, so dass es auf "allen" Geräten funktioniert? – Uooo

Antwort

9

Leider glaube ich nicht, dass dies heute für den allgemeinen Fall möglich ist.

Wenn Sie nur an einer begrenzten Anzahl von Geräten interessiert sind, können Sie natürlich alle testen und diese gezielt über User Agent oder JavaScript-basierte Erkennung ansprechen.

Im Kontext einer dicken App (zB "wickeln" Sie Ihre Website mit etwas wie Apache Cordova), wäre es möglich, JavaScript-Zugang zu einigen der Geräte-Interna (z. B. Menge des Gesamtspeichers, Menge) bereitzustellen von freiem Speicher, Prozessorgeschwindigkeit), aber ansonsten sind diese Informationen nicht vom Browser verfügbar. Wie Sie bereits angedeutet haben, können Informationen zu diesem Gerätetyp immer noch unzureichend sein (z. B. scheinbar "hoch spezifizierte" Geräte, die schlecht funktionieren).

JavaScript Feature-Erkennung Bibliotheken wie Modernizr beantworten können, ob etwas wie box-shadow und text-shadow durch den aktuellen Browser des Benutzers unterstützt wird, liefert jedoch keine Informationen über wie gut oder wie schnell Funktionen unterstützt wird gerendert.

, ebenso die Datensätze aus Browserscope und damit verbundenen Projekt ringmark (etwas von einem JavaScript-Analog WURFL) beantworten diesen Browser Unterstützung Fragen auf einer Pro-Browser-Version Basis durch Crowdsourcing Benchmarking-Tests (zB funktioniert die iPhone Unterstützung CSS3 Übergänge?), und für den allgemeinen Fall wäre das notwendig. Sie müssten einen Benchmark-Test für die verschiedenen Features durchführen und die Echtzeit-Performance bewerten. Doch selbst hat dies seine Grenzen:

  • Da die notwendigen Voraussetzungen für die Geschwindigkeit (verfügbarer Speicher, Prozessor, Batterie, Netzwerkverbindung, etc.) ständig im Fluss sind als mobile Nutzer bewegen, Anrufe empfangen, ändern Hardware-Einstellungen , starten Hintergrundanwendungen, etc., das Ergebnis der Benchmark ist wahrscheinlich unzuverlässig/unwiederholbar.
  • Benchmarking braucht Zeit und wird unveränderlich eine (hoffentlich unbemerkbare) Verzögerung hinzufügen.
  • Je nach Feature ist das Benchmarking möglicherweise nicht praktikabel.
  • Features können sich in Kombination (z. B. Animieren transparenter PNGs mit Schatten) oder im Maßstab (z. B. jedes Bild auf der Seite animieren) unterschiedlich verhalten als einzeln im Benchmarking-Test.
  • Wenn Sie sich auf das Benchmarking von Datensätzen verlassen, anstatt ein eigenes Echtzeit-Benchmarking durchzuführen, schränken die Stichprobengröße, der Umfang und das Alter des Datensatzes dessen Nützlichkeit stark ein.

Ein letzter Punkt ist, dass ich nicht einmal die Tatsache ist, angesprochen haben, dass die Leistung eher subjektive ist. Sagen wir, es wäre irgendwie möglich, die Geschwindigkeit einer Animation zu schätzen/vorherzusagen. Wenn die Animation mit 15 fps läuft, sollte der Benutzer diese Animation sehen? Was ist mit 5 fps? Wer wird der ultimative Arbiter, der den Schwellenwert dafür entscheidet, ob ein gegebenes Feature gut genug erfüllt?

Der beste Rat, den ich Ihnen heute bieten kann, ist, Ihre Abhängigkeit von den problematischen Funktionen vorerst zu reduzieren (oder zu eliminieren). Es mag schrecklich erscheinen, auf die "alte Art" zurückzugreifen, Bilder mit vordefinierten Schatten zu verwenden oder Hintergrundverläufe ohne CSS3 zu erstellen, aber am Ende des Tages sollte die Benutzererfahrung Vorrang vor der Verwendung der glänzenden neuen Technologie haben. Viele mobile Geräte sind noch nicht da, und auch die Erkennungsmethoden sind nicht vorhanden. Wenn Sie diese Funktionen verwenden müssen, sollten Sie vielleicht eine einfache, aber unaufdringliche Möglichkeit für Nutzer wählen, wie die Standardoptionen "Gmail" und "Basic HTML" zu wählen oder automatisch die Aktivierung für bekannte gute Browser zu erwägen .

+0

Hallo, scheint, hast du deine Hausaufgaben gemacht :-) Ich tendiere dazu, dir das Kopfgeld zu geben, aber ich muss zuerst die Fakten überprüfen. Erwarte, dass ich in zwei Tagen wiederkomme. Danke schon! – xamiro

0

Kurz gesagt, nein. Wie wir die Glätte von Animationen und Grafiken definieren, hängt einzig von der FPS (frame-per-second) ab. Und in dieser Frage sprechen wir von "Web-Apps", die auf der Client-Seite HTML und JS nutzen. Da keine Client-Seite eine Schnittstelle für die Programme bereitstellt, um den FPS durch HTML oder JS zu erhalten, ist es unmöglich zu sagen, ob der Client glatt ist oder nicht.

Allerdings, wenn Sie wirklich einen Benchmark für die Leistung von Web-App wollen. Sie können stats.js verwenden, um die Änderung von stat zu überwachen und einen Benchmark für Sie zu haben, um Ihrem Client vorzuschlagen, beliebige Effekte zur Laufzeit zu aktivieren oder zu deaktivieren. Diese Methode funktioniert sogar mit den meisten FX von Javascript Bibliotheken wie jQuery. Aber dies wird einige Zeit dauern, bis Sie genügend Daten erhalten, bevor Sie Änderungen vornehmen, und der Status kann sich vom Status des Geräts unterscheiden, z. B. Speichernutzung, gleichzeitige Anwendungen usw.

2

Ich kann nicht viel mehr hinzufügen als 'user113215 ' bereits gesagt.Es ist auch keine Antwort auf die eigentliche Frage, sondern auf das eigentliche Problem:

Ich habe mit ein paar Benutzern experimentiert und wir waren mit einem einfachen Willkommen Popup-Menü, bitten den Benutzer, spezielle Effekte wie Schatten und Animationen zu deaktivieren. Die meisten Testbenutzer haben die Auswahl und die Mittel eines solchen Menüs sehr gut verstanden. Wir integrieren dies jetzt weiter fortgeschritten und in Verbindung mit einem versteckten Benchmark für die automatische Vorauswahl von GFX-Effekten.

Vielen Dank. g

Verwandte Themen