Ich möchte eine mobile Anwendung entwickeln. Ich habe kürzlich einen Artikel im Telerik-Forum gelesen , in dem drei Arten mobiler Anwendungen verglichen werden, und ich weiß nicht, für welche ich mich zuerst entscheiden soll. Hier ist ein Bild, das die Vor- und Nachteile der verschiedenen Optionen für das mobile Design beschreibt
Um zwischen diesen Entwurfswahlen zu entscheiden, möchte ich die Vor- und Nachteile jeder im Diagramm aufgelisteten Architekturwahl besser verstehen. Welche Vor- und Nachteile hat jeder Architekturansatz?
design
architecture
programming-practices
mobile
Anyname Donotcare
quelle
quelle
Antworten:
Ich bin ein mobiler Entwickler, der sich intensiv mit diesem Thema beschäftigt hat.
Warum fragst du?
Höchstwahrscheinlich möchten Sie die Kosten für die App-Entwicklung senken, indem Sie:
Gründe können auch sein:
Definitionen
Lassen Sie uns genau festlegen, was wir mit jedem der drei genannten Ansätze meinen:
Native
Eine App, die auf einem Gerät installiert ist, normalerweise aus dem App Store (obwohl sie manchmal von der Seite geladen werden kann). Für die Zwecke dieser Diskussion besteht die Benutzeroberfläche einer nativen App normalerweise nicht nur aus einer Vollbild-Webansicht.
Mobiles Web
Dies kann in der Tat eine beliebige Webseite sein. In dieser Diskussion wird jedoch eine einseitige Web-App betrachtet, die versucht, das Erscheinungsbild einer nativen App zu imitieren. Es ist keine native App, sondern wird im Browser des Geräts ausgeführt.
Hybrid
Hybrid App
instanceof
native App.Die meisten Leute verstehen eine Hybrid-App wahrscheinlich als eine einseitige mobile Web-App (die wahrscheinlich das Erscheinungsbild einer nativen App imitiert), aber als native App mit Zugriff auf native Services (à la Phonegap).
Tatsächlich gibt es jedoch ein Spektrum zwischen dem Phonegap-Modell und dem vollständig nativen, auf das ich später noch eingehen werde.
Mobiles Web
Technische Einschränkungen
Lassen Sie uns zunächst einige technische Einschränkungen für mobile Web-Apps auflisten, die für sich genommen, abhängig von Ihren Aktivitäten, zu Bruch gehen können:
Wenn Sie mit all dem leben können, lesen Sie weiter, um mehr über die Herausforderungen von einseitigen nativen Web-Apps zu erfahren. Dieser Abschnitt wäre jedoch ohne Bezugnahme auf die FT-App nicht vollständig.
Financial Times
Die FT-Web-App ist ein bekanntes Beispiel für diesen App-Stil. Hier ist ein interessantes Feature der britischen Guardian-Zeitung dazu.
Es ist sicherlich eine bemerkenswerte Leistung der Technik. Beachten Sie, dass es derzeit nur noch auf iOS verfügbar ist. Dies zeigt, dass es für sie sehr schwierig ist, die Herausforderungen der fortschrittlichen browserübergreifenden Entwicklung zu lösen.
Einseitige Web-Apps im einheitlichen Stil
Dieser Abschnitt gilt sowohl für mobile Webanwendungen als auch für Apps im Phonegap-Stil.
Das native Erscheinungsbild einer Web-App wird normalerweise mit einem Framework wie Sencha Touch erzielt , das eine Reihe von UI-Komponenten zur Verfügung stellt.
Solche Frameworks eignen sich gut für sehr einfache Benutzeroberflächen. Ihnen fehlt jedoch Flexibilität. Mit Sencha können Sie kein natives App-Design implementieren. Sie müssen Ihr Design an die Anforderungen des Frameworks anpassen.
Die Hauptursache für diese Frameworks ist der Versuch, die Feinheiten der Benutzeroberfläche der Plattform zu emulieren. Welchen netten kleinen Springeffekt bekommst du, wenn du auf dem iPhone zum Ende einer Liste gescrollt hast? Ihr Framework muss dies in Javascript emulieren. Es ist unmöglich, es vollständig neu zu erstellen, es wird sich verlangsamen und Ihre Benutzer werden im "unheimlichen Tal" einer App gefangen sein, die ein bisschen wie einheimisch aussieht, es aber eindeutig nicht ist und nicht technisch ist Der Benutzer kann nicht genau sagen, warum.
Der Mythos "HTML5 / Javascript ist einfach"
Die Fragmentierung von Geräten in Webbrowsern ist weit verbreitet, und wenn Sie über das grundlegendste HTML und CSS hinausgehen, werden Sie feststellen, dass die Dinge nicht so funktionieren, wie Sie es erwarten. Möglicherweise verbringen Sie mehr Zeit mit der Lösung umständlicher Benutzeroberflächenprobleme, als Sie es sich zweimal erspart hätten. Wenn Sie nativ werden, beachten Sie, dass native App-Webviews nicht mit Gerätebrowsern identisch sind und ihre eigenen Fragmentierungsprobleme haben.
Und da Ihre App immer komplexer wird, werden Sie feststellen, dass Sie mehr als nur grundlegende JQuery-Kenntnisse benötigen, um Ihr Javascript sauber und wartbar zu halten.
Mit diesem Ansatz ist es jedoch durchaus möglich, recht schnell einfache, funktionierende Apps zu erstellen. Aber es ist ziemlich offensichtlich, wann eine App es tut.
Weiter entlang des Spektrums
Wir wollen also ein besseres UX, als es Apps im Phonegap-Stil bieten können, ohne absolut alles von Grund auf neu zu schreiben. Was können wir tun?
Teilen Sie Nicht-UI-Code
Für die gemeinsame Nutzung der Geschäftslogik auf mehreren nativen Plattformen stehen verschiedene Techniken zur Verfügung. Google hat J2ObjC gestartet, das Java in Objective-C übersetzt. Unter sorgfältiger Berücksichtigung von Code kann eine Java-Bibliothek sowohl auf Android als auch auf iOS verwendet werden.
Mit Bibliotheken wie Calatrava und Kirin können in Javascript geschriebene Codebasen (und damit alles, was mit Javascript kompiliert werden kann) aus nativem Code manipuliert werden. Haftungsausschluss: Ich arbeite für Future Platforms, die Kirin erstellt haben. Wir hatten großen Erfolg damit auf iOS mit Javascript, das aus Java mit GWT generiert wurde, wobei Java-Code auch nativ auf Android ausgeführt wird.
Verwenden Sie gegebenenfalls Webviews
Vollbild-Webviews haben viel zu tun, um Bildschirmübergänge und Bounce-Effekte zu imitieren. Eine Webansicht in nativem App-Chrom kann jedoch nicht von nativem unterschieden werden.
Es gibt Standardmethoden und gut dokumentierte Methoden für die Kommunikation mit nativen Apps und Webviews.
Auf diese Weise können Listen und Tabellen besonders gut funktionieren. Die Texteingabe ist jedoch ein Beispiel für eine native Vorgehensweise (für die vollständige Kontrolle über die Tastatur).
Zusammenfassend
Welcher Ansatz für Sie am besten geeignet ist, hängt davon ab, wie kompliziert Ihre App ist und mit welcher Oberflächenpolitur Sie zufrieden sind.
Mein Motto: Verwenden Sie Webviews, wo immer Sie können, aber stellen Sie sicher, dass Ihre Benutzer es nicht wissen .
quelle
Überprüfen Sie zuerst diese Umfrage, um zu wissen, was los ist!
Vergleich zwischen den drei Typen: Grundlegendes zu den Entwicklungsoptionen für mobile Anwendungen
Vergleiche zwischen einheimischen und hyprid:
HTML5 vs Native
HTML5 vs Native App: Welche soll ich wählen?
Dieser ist wirklich gut: HTML5 v native Apps: Wichtige Überlegungen für Ihre mobile Strategie
Bemerkungen:
quelle
Wenn Sie auf die Hardware des Telefons zugreifen müssen, sollten Sie eine native App erstellen (in HTML5 können Sie auf einige Hardwarekomponenten des Geräts zugreifen, z. B. auf GPS).
Wenn Sie mit der Webentwicklung vertraut sind, sollten Sie sich daran halten, es sei denn, Sie müssen eine native App erstellen.
Soweit Sie wissen sollten, würde ich sagen, dass Sie alle unterschiedlichen Bildschirmgrößen (einschließlich vertikaler und horizontaler Ausrichtung) berücksichtigen sollten. Sie sollten verschiedene Versionen des Betriebssystems beachten (dies ist mehr für Android). Da es sich um mobile Geräte handelt, besteht die Möglichkeit, dass der Benutzer einen Anruf entgegennimmt und nicht über die Rechenleistung eines Desktops oder Servers verfügt.
quelle
Wenn ich eine Consumer-App schreibe, ist für mich die Akzeptanz und Wahrnehmung der App durch den Benutzer von größter Bedeutung für den Erfolg. Aus diesem Grund gibt es vier Gründe, sich für native Apps zu entscheiden:
Was Sie vor allem wollen, ist eine großartige Benutzererfahrung, die Ihrer App hilft, auf dem Markt erfolgreich zu sein. Natürlich gibt es Ausnahmen, insbesondere mangelnde Fähigkeiten, Zeit- und Budgetmangel. Manchmal richten sich Apps an eine begrenzte Anzahl von Geschäftsbenutzern, denen diese Dinge möglicherweise nicht so wichtig sind.
Aus ähnlichen Gründen hat Facebook seine App-Strategie zugunsten nativer Apps für iOS und Android aufgegeben:
Lesen Sie bitte:
Mark Zuckerberg: Unser größter Fehler war, dass wir zu viel auf HTML5 gewettet haben http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on--- html5 /
Warum Facebook das mobile Web über Bord geworfen hat und mit seiner neuen iOS-App gebürtig wurde http://readwrite.com/2012/08/23/how-facebook-ditched-the-mobile-web-went-native-with-its-new- ios-app # awesm = ~ o9jDrRefxdgnpS
Hoffe das hilft.
quelle
Nachstehend meine derzeitige Haltung zu diesem Debakel: Hybrid ist zunächst gut, um Ihre App zu erkunden, schnell auf Kundenfeedback zu reagieren und den Funktionsumfang zu stabilisieren. Anschließend können Sie die App entsprechend der Spezifikation in native umschreiben, um die Benutzererfahrung zu verbessern.
Ich habe Mobile Web weggelassen, weil es einem ganz anderen Zweck dient. Wenn Sie in den App Stores sein möchten, ist Native / Hybrid der richtige Weg. Wenn Sie die Bereitstellung vereinfachen möchten und Erfahrung und technische Fähigkeiten einbüßen möchten, entscheiden Sie sich für Mobile Web.
Pro / Cons Native :
Pro / Contra Hybrid :
quelle
Als mobiler Entwickler ist der Offline-Zugriff das Schlimmste. Sie erzwingen einfach, dass Benutzer online sind, was in vielen Apps funktionieren sollte, aber nicht in allen.
Der andere große Nachteil ist die Langsamkeit. Die zum Parsen entfernter Daten erforderliche Zeit kann beträchtlich sein. Ja, Sie können Daten während der Ladezeit vorab abrufen, aber in allen anderen Fällen können Sie eine Langsamkeit nicht vermeiden.
Ich fand, dass eine solche App App teurer als native beendet. Ich empfehle sie keinem meiner Kunden mehr.
quelle
Das große Problem bei hybriden Apps ist die Fragmentierung der Frameworks: Es gibt deutlich mehr davon (Ionic, Xamarin, React Native usw.) als native mobile Plattformen (in der Regel nur zwei, Android und iOS). Diese Frameworks konkurrieren, entstehen und sinken, sodass Sie sich durch den Wechsel zu einem Hybrid nicht vom Sprung von Plattform zu Plattform abhalten lassen, selbst wenn Sie vorhaben, Ihr aktuelles Team für immer zu behalten.
Google und Apple geben ihr Bestes, um Editoren, Debugger, Testframeworks, Refactoring-Tools und andere Mittel bereitzustellen und zu unterstützen, die sie für ihre Plattformen entwickeln können. Daher würde ich eine typische Formulierung nehmen: " Es ist viel einfacher, eine Hybrid-App zu entwickeln, mit Ihrem Lieblingseditor zu bearbeiten und in einem Browser zu öffnen ", mit der begründeten Einschränkung. Xamarin und React Native sind Entwicklungsplattformen, genauso wie Swift oder Java / Android, und während "Hallo Welt" kürzer aussehen mag, sollte es sich irgendwann die vergleichbare Zeit nehmen, um richtig zu lernen.
Wenn auf jeden Fall native Komponenten benötigt werden (z. B. muss eine vorhandene Bibliothek eines Drittanbieters integriert werden), stehen drei Frameworks anstelle von zwei zur Verfügung: iOS, Android und Ihr Hybrid-Framework mit komplexerer Architektur. Das Debuggen solcher Apps, das Wechseln zwischen schichtübergreifenden Aufrufen, das Protokollieren aller Schichten und das Synchronisieren von Code ist komplex bis manchmal unmöglich.
Einige sagen, die " App wird für alle Plattformen gleich aussehen ". Ist es wirklich eine gute Sache? Die Android-App muss aussehen wie die Android-App und die iOS-App muss aussehen wie die iOS-App.
Was ist mit den neuen Funktionen? Wearables? Sofort-Apps jetzt von Android-Plattform angeboten? Zusätzliche Daten auf externem Display anzeigen? Hybrid-Apps unterstützen jetzt viele native Funktionen, aber unterstützen sie wirklich alle ? Jederzeit sofort?
Nicht nur die Leistung und die Benutzerfreundlichkeit, sondern auch die Sicherheit können für die native App von größerer Bedeutung sein. Das hybride Framework fügt die Ebene der Indirektion hinzu, die möglicherweise eigene Fehler enthält, einschließlich Sicherheitslücken.
Zusammenfassend würde ich unter der Auswahlmöglichkeit entweder die beiden nativen Apps wählen, eine für iOS und eine für Android, oder alternativ einfach eine mobile Version der Website entwerfen, ohne die App-Entwicklung für irgendeine Plattform zu beeinträchtigen .
quelle