<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Michaela Buschberger - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it201517/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it201517/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Thu, 24 Feb 2022 14:58:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Michaela Buschberger - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it201517/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CSS Frameworks</title>
		<link>https://mobile.fhstp.ac.at/allgemein/css-frameworks/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Thu, 24 Feb 2022 14:44:38 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9459</guid>

					<description><![CDATA[<p>CSS Frameworks können die Entwicklung von Web-Projekten effizienter gestalten. Doch nicht jedes Framework ist gleich gut für das eigene Projekt geeignet. In diesem Artikel erfährst du, was eigentlich genau ein CSS Framework macht und wofür man es verwendet. Es wird zudem ein kurzer Überblick über bekannte CSS Frameworks gegeben. Was ist ein CSS Framework? Im <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/css-frameworks/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/css-frameworks/">CSS Frameworks</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>CSS Frameworks können die Entwicklung von Web-Projekten effizienter gestalten. Doch nicht jedes Framework ist gleich gut für das eigene Projekt geeignet. In diesem Artikel erfährst du, was eigentlich genau ein CSS Framework macht und wofür man es verwendet. Es wird zudem ein kurzer Überblick über bekannte CSS Frameworks gegeben.</p>



<h2 class="wp-block-heading">Was ist ein CSS Framework?</h2>



<p>Im Wesentlichen besteht ein CSS-Framework aus mehreren Stylesheets, die von WebentwicklerInnen verwendet werden können. Dabei können Defaultwerte für Farben, Layout, Fonts etc. konfiguriert werden. Im Allgemeinen werden Stylesheets von anderen Technologien je nach Framework unterstützt und erweitert. Gängige Beispiele dafür sind SASS und JavaScript.</p>



<p>Mit CSS Frameworks werden also fertige Stylesheets zur Verfügung gestellt und können im HTML-Code eingebettet werden. Viele Frameworks verfügen auch bereits über integrierte Komponenten-Klassen wie beispielsweise Cards, Navigationskomponenten und Sliders.</p>



<p>Bei den Frameworks wird zudem zwischen component- und utility-based unterschieden. Die meisten bekannten Frameworks wie beispielsweise Bootstrap sind komponentenbasiert. Sie legen also den Fokus auf bereits vorgefertigte Elemente. Utility-based Frameworks haben den Nutzen, EntwicklerInnen so gut wie möglich Flexibilität in ihrem Design und der Umsetzung zu gewährleisten. Diese bieten also Klassen an, damit Webentwickler ihre Komponenten effizient und flexibel für ihr individuelles Design implementieren können.</p>



<h2 class="wp-block-heading">Wann macht die Verwendung eines CSS Frameworks sinn?</h2>



<p>Ob ein CSS Framework nun wirklich verwendet werden soll oder nicht, über dieses Thema wird viel diskutiert. Einige meinen, es sei essentiell, um die Entwicklung effizient zu gestalten, da vieles an Arbeit durch den Einsatz des Frameworks abgenommen wird. Andererseits sind Designer oft der Ansicht, dass dadurch alle Webseiten ähnlich aussehen. Daher gilt es an jeden die Vor- und Nachteile für sein eigenes Projekt abzuwägen. Möchte man ein sehr spezielles, individuelles Design sind eventuell component-based Frameworks nicht die richtige Wahl. Andererseits können hierbei utility-based Frameworks ihren Beitrag leisten, einem die Entwicklung von eigenen Komponenten zu vereinfachen. Für kleine Projekte könnten zusätzliche Frameworks auch ein Overhead bedeuten, zumal auch Ressourcen dafür bereitgestellt werden müssen, welche womöglich in diesem Umfang nicht gebraucht werden. Alles in Allem muss jeder selbst entscheiden, ob er ein CSS Framework für sein Projekt selbst als sinnvoll erachtet oder nicht. Hier sind die Vorteile, die im Web am meisten genannt werden:</p>



<ul class="wp-block-list"><li>Das Einhalten von UX-Richtlinien wird durch die Verwendung von vorgefertigten Klassen und Komponenten von CSS Frameworks vereinfacht. Es wird also dementsprechend ein Standard geboten, welcher cleane und symmetrische Layouts ermöglicht.</li><li>Je nach Anforderung können EntwicklerInnen schneller eine benutzerfreundliche und optisch ansprechende Benutzeroberfläche erstellen, ohne bei Null anfangen zu müssen.</li><li>Ist man selbst kein Webdesigner, können vor Allem komponentenbasierte Frameworks zum Thema Styling und Design eine Erleichterung bieten. Vor Allem für Projekte, wo kein individuelles Design von Bedeutung ist.</li><li>Da diese Frameworks über gebrauchsfertige Stylesheets verfügen, ermöglicht ihre Verwendung eine schnellere Web-Entwicklung. EntwicklerInnen müssen sich somit nicht tiefergehend mit CSS-Code auseinandersetzen.</li><li>Die Cross-Browser Functionality ist ein großer Pluspunkt bei CSS Frameworks. Sie machen es einfach Web-Anwendung oder Webseiten zu entwickeln, die mit mehreren Browsern und Browser-Versionen kompatibel sind. </li></ul>



<p>Je nachdem welches Framework verwendet wird, gelten die genannten Vorteile. Wie bereits erwähnt, hängt die Effektivität und Effizienz der Nutzung eine Frameworks jedoch von Umfang und Typ des eigenen Projektes ab. Folglich wird ein kurzer Überblick über bekannte Frameworks gegeben.</p>



<h2 class="wp-block-heading">5 Bekannte Frameworks im Überblick</h2>



<h3 class="wp-block-heading">Bootstrap</h3>



<p>Das von Twitter entwickelte Framework <a href="https://getbootstrap.com/">Bootstrap</a> (BS) ist wohl das bekannteste von allen. Es zählt zu den Komponenten-Frameworks, basiert auf den Technologien HTML, CSS, Javascript und unterstützt zudem SASS. Der Schwerpunkt von BS liegt vor Allem auf den Responsive- und Mobile-First Ansatz bei Webseiten und dessen Layout basiert auf einem 12-Grid-System.</p>



<p>BS bietet eine sehr umfangreiches Set an Komponenten an. Die breite Auswahl an Lösungen zu Overlays, Layouts, UI-Elemten, Buttons, Alerts, Cards und viele mehr zählen zu den größten Stärken von BS.</p>



<p>Ein weiterer Vorteil liegt in der übersichtlichen und sehr detaillierten Dokumentation. Es werden auch viele Beispiele zur Verwendung der vorgefertigten Komponenten und auch Erweiterungen angeboten.</p>



<p>Das Framework ist schließlich für jene geeignet, die Newcomer bei CSS sind und eine komponentenbasierte Basis für ihr Projekt benötigen.</p>



<h3 class="wp-block-heading">TailwindCSS</h3>



<p><a href="https://tailwindcss.com/">TailwindCSS</a> zählt derzeit zu den beliebtesten Frameworks und ist anders als Bootstrap utility-based. Das bedeutet, es werden hauptsächlich Utility-Klassen angeboten, um eigene Komponenten einfach und schnell entwickeln zu können. Die größte Stärke bei TailwindCSS liegt also im hohen Maß an Flexibilität und der minimalen Einschränkung bei der Website-Entwicklung. Dieses Framework ist vor Allem für jene geeignet, welche ein sehr spezielles und individuelles Design implementieren müssen. Der Einsatz dieser Utility-Klassen setzt jedoch ein bereits fortgeschrittenes Wissen über CSS voraus, um es effizient nutzen zu können.</p>



<h3 class="wp-block-heading">Foundation</h3>



<p>Auch <a href="https://get.foundation/">Foundation</a> ist ein responsives, Mobile-First CSS Framework und ist besonders für die Erstellung großer Web-Anwendungen geeignet. Es stellt Grid, HTML-, SASS- und CSS-UI-Elemente, Vorlagen und Code für Navigation, Buttons, Typografie, Forms und weiteres zur Verfügung. Es umfasst auch optionale Funktionalitäten, die von JavaScript-Erweiterungen angeboten werden. Eine Besonderheit stellt dabei beispielsweise die Motion-UI dar, eine SASS Bibliothek um flexible CSS-Animationen zu unterstützen. Zudem wird ein eigenes E-Mail Framework zur Verfügung gestellt.</p>



<h3 class="wp-block-heading">Bulma</h3>



<p><a href="https://bulma.io/">Bulma</a> ist ein komponentenbasiertes, responsives CSS Framework, basiert auf CSS Flexbox, kommt ganz ohne JavaScript aus und verwendet dasselbe Grid-System wie Bootstrap. Der Fokus liegt auf lightweight, also darauf nur das zu verwenden was man auch wirklich zur Umsetzung benötigt. Um das zu ermöglichen, werden einige Optionen zur einfachen Anpassbarkeit mithilfe von Sass-Files, Webpacks und Variablen geboten. Bulma ist zudem mit Font Awesome 4 als auch mit Font Awesome 5 kompatibel.</p>



<p>Es ist in der Community aufgrund des leichten Erlernens und der einfachen Verwendung sehr beliebt.  Es bietet eine gute Anzahl an Komponenten, die leicht anpassbar und kombinierbar sind. Bulma ist also sowohl für Anfänger als auch fortgeschrittene EntwicklerInnen geeignet.</p>



<h3 class="wp-block-heading">Material Design Lite &amp; MaterializeCSS</h3>



<p>Mit <a href="https://getmdl.io/started/index.html">Material Design Lite</a> können Webseiten mit dem Erscheinungsbild von Material Design erstellt werden. Es ist nicht auf JavaScript-Frameworks angewiesen und zielt darauf ab, die geräteübergreifende Verwendung zu optimieren.</p>



<p><a href="https://materializecss.com/">MaterializeCSS</a> ist ein weiteres Framework, dass basierend auf einen responsiven Ansatz entwickelt wurde. Ein großes Plus ist das ansprechende Design der Elemente. Es basiert auf dem Material Design von Google und bietet eine Reihe an UI-Komponenten an. Ein weiterer Vorteil liegt auf der einfachen Erlernbarkeit und es bietet eine sehr umfassende Dokumentation an.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Je nach Projektgröße und -art können CSS Frameworks eine Erleichterung und Zeitersparnis in der Web-Entwicklung darstellen. Es gibt bereits einige Frameworks, die eine Menge an Funktionalität anbieten. Dabei wird in utility-based und component-based unterschieden. Ist eine hohes Maß an Flexibilität bei der Umsetzung von Bedeutung, kann Tailwind als utility-based Framework eine gute Option darstellen. Dieses Framework erfordert jedoch ein fortgeschrittenes Wissen über CSS. Ist man in diesem Bereich ein Newcomer und braucht ein Framework, dass leicht zu erlernen ist und bereits einiges an Komponenten anbietet, kann vor allem Bulma, Bootstrap oder aber auch Materialize eine gute Alternative bieten.</p>



<h2 class="wp-block-heading">Quellen</h2>



<p><a href="https://www.browserstack.com/guide/top-css-frameworks">https://www.browserstack.com/guide/top-css-frameworks</a></p>



<p><a href="https://www.designerinaction.de/tipps-tricks/web-development/css-frameworks/">https://www.designerinaction.de/tipps-tricks/web-development/css-frameworks/</a></p>



<p><a href="https://dev.to/theme_selection/best-css-frameworks-in-2020-1jjh">https://dev.to/theme_selection/best-css-frameworks-in-2020-1jjh</a></p>



<p><a href="https://getbootstrap.com/">https://getbootstrap.com/</a></p>



<p><a href="https://bulma.io/">https://bulma.io/</a></p>



<p><a href="https://getmdl.io/started/index.html">https://getmdl.io/started/index.html</a></p>



<p><a href="https://materializecss.com/">https://materializecss.com/</a></p>



<p><a href="https://tailwindcss.com/docs/">https://tailwindcss.com/docs/</a></p>



<p><a href="https://getuikit.com/docs/introduction">https://getuikit.com/docs/introduction</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/css-frameworks/">CSS Frameworks</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FeliCity &#8211; Projektbeitrag</title>
		<link>https://mobile.fhstp.ac.at/development/native-development/felicity-projektbeitrag/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Tue, 21 Sep 2021 20:17:38 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Nest.js]]></category>
		<category><![CDATA[TypeORM]]></category>
		<category><![CDATA[Typescript]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9070</guid>

					<description><![CDATA[<p>Im Rahmen des Semesterprojektes, der Masterklasse Mobile im zweiten und dritten Semester, haben wir (Michalea Buschberger und Bettina Bröthaler) die Mobile App „FeliCity“ implementiert. Die App ist eine Sightseeing App, die anhand von Kategorien wie beispielsweise Kunst &#38; Kultur, Natur Pur oder Geschichte den Usern die Möglichkeit bietet, die Stadt mit Rundwegen per Navigation die <a class="read-more" href="https://mobile.fhstp.ac.at/development/native-development/felicity-projektbeitrag/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/native-development/felicity-projektbeitrag/">FeliCity &#8211; Projektbeitrag</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im Rahmen des Semesterprojektes, der Masterklasse Mobile im zweiten und dritten Semester, haben wir (Michalea Buschberger und Bettina Bröthaler) die Mobile App „FeliCity“ implementiert. Die App ist eine Sightseeing App, die anhand von Kategorien wie beispielsweise <strong>Kunst &amp; Kultur</strong>, <strong>Natur Pur</strong> oder <strong>Geschichte</strong> den Usern die Möglichkeit bietet, die Stadt mit Rundwegen per Navigation die Stadt zu besichtigen. Außerdem beinhaltet die App Informationen zu den einzelnen Sehenswürdigkeiten.</p>



<h2 class="wp-block-heading">Zuständigkeiten</h2>



<p>Für die Design Guidelines sowie die Umsetzung des Designs war Michaela zuständig. Auch die Frontendentwicklung mittels Android lag in ihrem Zuständigkeitsbereich.</p>



<p>Datenbank, Backendentwicklung mit NestJs und Content lag in Bettinas Zuständigkeit.</p>



<h2 class="wp-block-heading">Masterklassen Zusammenarbeit</h2>



<p>Im Rahmen des zweiten Semesters war außerdem im Rahmen einer anderen Lehrveranstaltung die Zusammenarbeit zwischen den Masterklassen angedacht. Somit hatten wir das Glück drei Kollegen beauftragen zu können uns bei der Erstellung der Inhalte zu unterstützen.</p>



<p>Lisa-Maria Gaff und Miriam Widhalm aus der Masterklasse Grafik Design haben uns wunderschöne Grafiken, Icons und ein fantastisches Logo kreiert und Sebastian Fröhlich war für die Fotografische Darstellung ausgewählter Wiener Sehenswürdigkeiten verantwortlich.</p>



<p>Einen herzlichen Dank nochmal an dieser Stelle!</p>



<h2 class="wp-block-heading">Design</h2>



<p>Michaela war für das Design und die grafischen Guidelines verantwortlich. Nach der Erstellung der Mockups und der Richtlinien wurde das Design verfeinert und schließlich fertiggestellt.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1386" height="421" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_DesignGuideLines.png" alt="" class="wp-image-9093"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1006" height="649" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_Design.jpg" alt="" class="wp-image-9094"/></figure>



<h2 class="wp-block-heading">Technologien</h2>



<p>Im Backend war die Entscheidung schnell klar, dass wir mit NestJs und TypeORM arbeiten wollen. Für die Frontendentwicklung war die Entscheidung etwas schwieriger. Für die Navigation an sich sollte MapBox verwandet werden. Die Technologie für die Frontendentwicklung fiel, aufgrund der Verwendung von Navigation, auf Android.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="415" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/BlogBeitrag_Technologien.png" alt="" class="wp-image-9095" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2021/09/BlogBeitrag_Technologien.png 800w, https://mobile.fhstp.ac.at/wp-content/uploads/2021/09/BlogBeitrag_Technologien-770x400.png 770w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading">Funktionen</h2>



<p>Als erstes wird nach der Installation der App ein Onboarding angeboten, um den Benutzer bereits zum Start die verschiedenen Funktionen vorzuführen. Nach der Registrierung beziehungsweise des Logins hat ein Benutzer die Möglichkeit sich die verfügbaren Städte anzusehen. Unter einem Benutzerprofil können die angegebenen Daten wie Username und Email eingesehen und auch das aktuelle Passwort auf ein neues abgeändert werden. Bei uns ist es momentan möglich Linz und Wien zu erforschen. Auch die zukünftig verfügbaren Städte sind hier aufgelistet aber noch nicht auswählbar.</p>



<p>Nach einer Stadtauswahl bekommt man die auswählbaren Kategorien, sowie die verfügbaren Sehenswürdigkeiten angezeigt. Auch die einzelnen Sehenswürdigkeiten kann man sich genauer ansehen und bekommt grundlegende Informationen zu den einzelnen Plätzen.</p>



<p>Ein großer Teil der App besteht im Planen der Routen. Ein Nutzer kann sich seine bereits erstellten Routen ansehen und auch die veröffentlichten Routen anderer Nutzer speichern und zu einem späteren Zeitpunkt gehen.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image alignwide size-large"><img loading="lazy" decoding="async" width="375" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_KeineRoutenScreen-375x800.png" alt="" class="wp-image-9096"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_RoutenScreen-376x800.png" alt="" class="wp-image-9097"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_Navigation-376x800.png" alt="" class="wp-image-9098"/></figure>
</div>
</div>



<p>Für die Routenplanung haben wir einen Konfigurator. Durch die Eingabe mehrerer Parameter wird eine Sammlung an Sehenswürdigkeiten aus dem Backend geliefert, die der Nutzer im Frontend noch weiterbearbeiten kann bevor er diese abspeichern und gehen kann.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_AutomConfig-376x800.png" alt="" class="wp-image-9100"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_AutomConfig2-376x800.png" alt="" class="wp-image-9101"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/FeliCity_BlogBeitrag_AutomConfig3-376x800.png" alt="" class="wp-image-9102"/></figure>
</div>
</div>



<p>Einer der größten Teile der App bildet unter anderem die Routen-Optimierung und Navigation zu den einzelnen Teilzielen innerhalb einer Route ab. Diese Funktionalitäten wurden im dritten Semester noch in Android/Kotlin mit dem Plugin Mapbox Navigation und Optimization umgesetzt.</p>



<h2 class="wp-block-heading">Learnings</h2>



<h3 class="wp-block-heading">Bettina</h3>



<p>Für mich bestanden die größten Learnings in NestJs, sowie in TypeScript und TypeORM. Außerdem konnte ich mich weiter mit dem Aufbau von Datenbanken auseinandersetzen und auch mit der Serverkonfiguration für NodeJs Projekte. Auch konnte ich mich mit der API Definition unserer App auseinandersetzen und mir den Mailversand genauer ansehen.</p>



<h3 class="wp-block-heading">Michaela</h3>



<p>Da für mich die Entwicklung in Android (und Kotlin) ganz was Neues war, bestand für mich hier das größte Learning. Dazu gehörte nicht nur Basiswissen wie beispielsweise wie binde ich Vectoren oder Images ein, was ist eine Activity oder ein Fragment, wie verwende ich Navhosts, sondern auch der Einsatz von Retrofit und der Mapbox stellten eine neue und interessante Herausforderung für mich da. Jedoch habe ich das Styling von Screens und Einbinden von Ressourcen um Einiges zeitaufwändiger empfunden als in der Webentwicklung.</p>



<h2 class="wp-block-heading">Wie es weitergehen soll…</h2>



<p>Wir haben noch viele Ideen, wie wir FeliCity noch besser machen können. Unser Ziel wäre es hier, die App zu veröffentlichen und möglicherweise noch für iOS zu entwickeln.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Admin Interface</h2>



<p>Das Admin Interface wurde mit dem React Framework NextJs entwickelt. Die Daten werden über die NestJs API abgerufen und aktualisiert. Anmelden können sich hier nur Admin Mitglieder, die damit die Berechtigung haben Inhalte zu aktualsieren. Das Interface soll also nicht, wie die zugehörige App zum navigieren genutzt werden, sondern zu Administrativen Zwecken verwendet werden. Das Design ist an die mobile Applikation angepasst.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/grafik-1-1540x800.jpg" alt="" class="wp-image-9711" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /><figcaption>Städteübersicht</figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/grafik-1-2-1540x800.jpg" alt="" class="wp-image-9713" width="840" height="436" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-2-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-2-770x400.jpg 770w" sizes="auto, (max-width: 840px) 100vw, 840px" /><figcaption>Wien Detailansicht</figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/grafik-1-3-1540x800.jpg" alt="" class="wp-image-9714" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-3-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-3-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /><figcaption>Sehenswürdigkeiten Übersicht</figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/grafik-1-4-1540x800.jpg" alt="" class="wp-image-9715" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-4-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-4-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /><figcaption>Sehenswürdigkeit Detail</figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Das Admin Interface soll dafür genutzt werden die Daten auf dem aktuellen Stand zu halten. Hierfür können die Formulare genutzt werden. Beispielsweise für eine Stadt:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1663" height="1383" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/grafik-1-5.jpg" alt="" class="wp-image-9716" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-5.jpg 1663w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/grafik-1-5-1536x1277.jpg 1536w" sizes="auto, (max-width: 1663px) 100vw, 1663px" /><figcaption>Stadt Bearbeiten</figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Auf die gleiche Art und Weise können Städe, Sehenswürdigkeiten oder Routen erstellt oder aktualisiert werden.</p>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/native-development/felicity-projektbeitrag/">FeliCity &#8211; Projektbeitrag</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pagespeed-Optimierung</title>
		<link>https://mobile.fhstp.ac.at/allgemein/pagespeed-optimierung/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Tue, 21 Sep 2021 17:37:21 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9080</guid>

					<description><![CDATA[<p>Lange Ladezeiten werden oft als stöhrend empfunden. Sie sind auch oft der Grund, warum die BesucherInnen wieder von der Webseite abspringen. Denn sowohl für die Suchmaschine als auch für InternetnutzerInnen ist der Pagespeed ein entscheidendes Qualitätskriterium, an der die Seite gemessen wird. Eine kurze Ladezeit ist daher maßgeblich. Dieser Artikel enthält einige nützliche Tipps, die <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/pagespeed-optimierung/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/pagespeed-optimierung/">Pagespeed-Optimierung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Lange Ladezeiten werden oft als stöhrend empfunden. Sie sind auch oft der Grund, warum die BesucherInnen wieder von der Webseite abspringen. Denn sowohl für die Suchmaschine als auch für InternetnutzerInnen ist der Pagespeed ein entscheidendes Qualitätskriterium, an der die Seite gemessen wird. Eine kurze Ladezeit ist daher maßgeblich.</p>



<p>Dieser Artikel enthält einige nützliche Tipps, die bei der Optimierung des Pagespeeds helfen können.</p>



<h2 class="wp-block-heading">Caching</h2>



<p>Ladezeiten kann man verringern, indem man häufig oder dieselben Inhalte nicht immer wieder erneut laden muss. Und dabei hilft das Caching. Dabei wird zwischen serverseitigen- und Browser-Caching unterschieden werden.</p>



<p>Das serverseitige Caching ist bei häufigen Requests von Resourcen, wie Datenbank-Anfragen, hilfreich damit diese nicht immer wieder ausgeführt werden müssen. Mit Browsercaching kann man Ressourcen der Webseite im Browser zwischenspeichern, beispielsweise Headerelemente wie Bilder. Alles was man nicht unnötig nochmal neu anfordert bzw laden muss, hilft natürlich bei der Performance.</p>



<h2 class="wp-block-heading">Bilder komprimieren und Lazy Loading</h2>



<p>Oft haben Bilder eine größere Auflösung, als wirklich benötigt wird. Daher ist hier die Komprimierung dieser eine sehr gute Möglichkeit, um den Pagespeed hinaufschnellen zu lassen. Denn Bilder gehören neben CSS und JS zu den ressourcenintensivsten Formaten. Die Komprimierung von Bildern beschleunigt also den Download und die damit verbundene Ladezeit der Seite deutlich.</p>



<p>Eine weitere Möglichkeit ist das sogenannte Lazy Loading. Dieses Script sorgt dafür, dass Bildressourcen erst dann angefordert werden, wenn sie gebraucht werden, sprich wenn sie im Blickfeld der NutzerInnen sind. Vor allem bei sehr bildlastigen Websites kann man so bei der Ladezeit einiges einsparen. Aber nicht nur das Lazy Loading kann hier helfen, Ladezeit bei später gebrauchte Ressourcen einzusparen. Allgemein sich Gedanken zu machen welche Ressourcen früher benötigt werden und hier priorisiert die Elemente zu laden, kann sich positiv auf die Performance auswirken. Bildelemente die beispielsweise erst im Footer angezeigt werden, können also ruhig zum Schluss geladen werden anstatt ganz am Anfang.</p>



<h2 class="wp-block-heading">Bad Requests</h2>



<p>Das Anfordern von Ressourcen, die es nicht gibt, hat nicht nur eine schlechte User Experience zur Folge, sondern bremst auch erheblich die Performance der Webseite ein. Daher heißt es unbedingt darauf achten, ob Ressourcen die man anfordert wie beispielsweise Bilder oder Fonts, wirklich zur Verfügung stehen.</p>



<h2 class="wp-block-heading">Optimierung von HTML, CSS und JS</h2>



<p>Auch HTML, CSS und JS können so optimiert werden, um Datenvolumen einzusparen. Bei HTML kann beispielsweise bereits durch das Weglassen von überflüssigen Kommentaren und Leerzeilen Einiges eingespart werden. Auch sollte darauf geachtet werden, eher größere als viele JS- und CSS-Files zu generieren, um HTTP-Requests gering zu halten. Auch sollte man die CSS-Dateien vor JS einbinden, um den BenutzerInnen bereits die Darstellung der Seite früher richtig anzuzeigen. Denn Pagespeed-Analysetools kalkulieren den Score des Pagespeeds auch anhand des sogenannten &#8220;Cumulative Layout Shifts&#8221;. Dieser validiert, welche unerwarteten Änderungen BenutzerInnen am Layout der Webseite noch visuell wahrnehmen können. Allgemein lohnt es sich, sich Gedanken zu machen, wann welche Ressource wirklich benötigt wird. Ist es zb. Notwendig diverse JS-Dateien direkt im Header zu laden, oder reicht es im Footer?</p>



<p>Zusätzlich sollte man CSS- und JS-Dateien komprimieren. Dafür kann man beispielsweise JS-Taskrunner verwenden. Ist es ein kleines Projekt mit wenig CSS und JS, gibt es einige Webseiten die das Minimieren solcher Files gratis anbieten.</p>



<h2 class="wp-block-heading">Critical CSS und Third Party</h2>



<p>Oft rentiert es sich Inline-JS und -CSS zu verwenden, besonders auf der Startseite. Bei CSS ist es zum Beispiel von Vorteil ein sogenanntes „Critical CSS“ zu erstellen, dass die wichtigsten Styles liefert. Alle andern Styles können somit im Footer nachgeladen und wirken sich nicht mehr negativ auf den PageSpeed aus. Auch hier gibt’s es schon einige Webseiten, wo lediglich die Website-Adresse angegeben werden muss, um sich das Critical-cSS generieren lassen zu können.</p>



<p>Bei Third-Party Ressourcen wie beispielsweise Bootstrap, ist es übrigens auch oft ratsam eine CDN zu verwenden, anstatt diese auf dem eigenen Server bereitzustellen. CDNs weisen meist eine bessere Performance beim Ausliefern auf. Falls man aus irgendeinem Grund dennoch Bootstrap direkt am Server verwendet, dann kann es auch viel einsparen, nur die Elemente einzubinden (beispielsweise nur den Slider), die man wirklich benötigt.</p>



<h2 class="wp-block-heading">Verwendung von Pagespeed-Analysetools</h2>



<p>Es gibt bereits einige Webseiten, die detaillierte Informationen über eine Webseite in Bezug auf den Pagespeed liefern. Diese zeigen dir anhand verschiedener Kriterien einen bestimmten Pagespeed-Score, an dem du dich orientieren kannst. Dieser kann auch nützlich sein, die bereits ergriffenen Maßnahmen zu validieren. Der vermutlich bekannteste Analysereport bietet Google an: „PageSpeed Insights“. Diesen Report kann man auch direkt unter den Developer Tools in Chrome unter den „Lighthouse“ generieren lassen. Anhand verschiedener Kriterien wird der Score kalkuliert und genau aufgelistet, welche Ressourcen und Aufgaben am meisten an Ladezeit beanspruchen:</p>



<ul class="wp-block-list"><li><em>First Contentful Paint: </em>Die Zeit, welche für das Darstellen des ersten Textes oder Bildes der Seite benötigt wird</li><li><em>Speedindex: </em>Der Geschwindigkeitsindex gibt an, wie schnell die Inhalte einer Seite sichtbar dargestellt werden.</li><li><em>Largest Contentful Paint: </em>Largest Contentful Paint gibt an, wie lange das Zeichnen des längsten Texts oder des größten Bilds dauert</li><li><em>Time to Interactive:</em> Die Zeit bis Interaktivität entspricht der Zeit, die vergeht, bis die Seite vollständig interaktiv ist</li><li><em>Total Blocking Time: </em>Summe aller Zeiträume (in Millisekunden) zwischen FCP und Zeit bis Interaktivität, wenn die Aufgabendauer 50&nbsp;ms überschreitet</li><li><em>Cumulative Layout Shift:</em> Cumulative Layout Shift misst die Bewegung sichtbarer Elemente innerhalb des Darstellungsbereichs.</li></ul>



<p>Solche Analysetools sind also ein mächtiges Werkzeug, um bestehende Probleme auf der eigenen Webseite zu finden und mit den Empfehlungen diese zu beseitigen. Gmetrix bietet beispielsweise zusätzlich auch ein Wasserfall-Diagramm an, um genauere Wartezeiten von bestimmten Ressourcen analysieren zu können. Übrigens kannst du dir so ein Diagramm auch unter den Devtools im Chrome unter Netzwerk ansehen.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Die Ladezeit ist ein wichtiges Qualitätskriterium der Webseite und bestimmt oft darüber, ob BenutzerInnen auf einer Webseite verweilen oder nicht. Es gibt Richtlinien, die dabei helfen können, die eigene Webseite zu optimieren. Dazu zählt das Cachen von häufig verwendeten identischer Daten. Ein wichtiger Punkt ist auch das Optimieren von Bildern und Quellcode-Ressourcen, wobei auch darauf geachtet werden sollte, ob diese überhaupt zur Verfügung stehen um Bad Requests zu vermeiden. Auch das Priorisieren der Ressourcen und die Verwendung von CDNs und Critical CSS beeinflussen die Ladezeiten positiv. Analysetools wie PageSpeed Insights und GtMetrix sind mächtige Werkzeuge, die detaillierte Reports über Pagespeed-Probleme der Webseite Aufschluss geben können.</p>



<p>Quellen</p>



<p><a href="https://developers.google.com/speed/docs/insights/v5/about">https://developers.google.com/speed/docs/insights/v5/about</a></p>



<p><a href="https://gtmetrix.com/">https://gtmetrix.com/</a></p>



<p><a href="https://wao.io/de/ratgeber/pagespeed-optimierung/">https://wao.io/de/ratgeber/pagespeed-optimierung/</a></p>



<p><a href="https://pixeltale.de/lazy-load/">https://pixeltale.de/lazy-load/</a></p>



<p><a href="https://www.klickkonzept.de/online-marketing-blog/seo/pagespeed-optimierung/">https://www.klickkonzept.de/online-marketing-blog/seo/pagespeed-optimierung/</a></p>



<p><a href="https://www.omsag.de/online-marketing-blog/seo/pagespeed-optimierung-mit-diesen-tipps-zur-blitzschnellen-website/">https://www.omsag.de/online-marketing-blog/seo/pagespeed-optimierung-mit-diesen-tipps-zur-blitzschnellen-website/</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/pagespeed-optimierung/">Pagespeed-Optimierung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>In-Lab -, Asynchrones &#8211; und Synchrones Remote Usability Testing</title>
		<link>https://mobile.fhstp.ac.at/allgemein/in-lab-asynchrones-und-synchrones-remote-usability-testing/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Fri, 19 Feb 2021 16:22:15 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8867</guid>

					<description><![CDATA[<p>1. Einleitung Für die Evaluierung der Benutzerfreundlichkeit eines Software-Produktes haben sich in den letzten Jahren mehrere Methoden etabliert. Zu diesen Methoden zählt vor Allem das traditionelle „In-Lab Testing“, welches bereits als Hauptmethode für die Evaluierung der Usability von Software angesehen werden kann (Alghamdi et al., 2013). Jedoch sind traditionelle In-Lab Usability Tests auch oft mit <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/in-lab-asynchrones-und-synchrones-remote-usability-testing/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/in-lab-asynchrones-und-synchrones-remote-usability-testing/">In-Lab -, Asynchrones &#8211; und Synchrones Remote Usability Testing</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">1. Einleitung</h2>



<p>Für die Evaluierung der Benutzerfreundlichkeit eines Software-Produktes haben sich in den letzten Jahren mehrere Methoden etabliert. Zu diesen Methoden zählt vor Allem das traditionelle „In-Lab Testing“, welches bereits als Hauptmethode für die Evaluierung der Usability von Software angesehen werden kann (Alghamdi et al., 2013). Jedoch sind traditionelle In-Lab Usability Tests auch oft mit erhöhtem Zeit- und Kostenaufwand sowie mit einer herausfordernden Rekrutierung verbunden (Schade, 2013). Auch aufgrund der aktuellen Quarantäne- und Reisebeschränkungen durch COVID-19 ist es vielen UX-ResearcherInnen derzeit nicht möglich, Usability-Tests im Labor durchzuführen.</p>



<p>Um vor Allem den Einschränkungen in Bezug auf den Aufwand, Kosten und Rekrutierungsproblemen entgegenzuwirken, wurde in den letzten Jahren bereits eine weitere Usability Evaluierungsmethode entwickelt, das Remote Usability Testing. Anders als bei traditionellen In-Lab Tests befinden sich ProbandInnen und ModeratorInnen bei dieser Form an zwei verschiedenen Orten. Diese Evaluierungsform unterscheidet sich in einer asynchronen (nicht moderierter) und synchronen (moderierter) Vorgehensweise (Alghamdi et al., 2013).</p>



<p>In diesem Artikel wird auf Basis einer Literaturrecherche eruiert, inwiefern sich das In-Lab Testen, asynchrone- und synchrone Remote Testing in deren Methodik, Interaktion mit ProbandInnen und in der Datenerhebung unterscheiden. Auch werden deren Kosten und Zeitaufwand gegenübergestellt. Im ersten Abschnitt wird die grundlegende Theorie zu den Usability Evaluierungen aufgearbeitet. Darauf aufbauend werden deren Unterschiede thematisiert, um wichtige Merkmale dieser Methoden zu eruieren. Der letzte Abschnitt die wesentlichen Ergebnisse der Gegenüberstellung von dem In-Lab -, asynchrone- und synchrone Usability Testing gegenüber.</p>



<h2 class="wp-block-heading">2. Usability Testing</h2>



<p>Um einen Vergleich zwischen den Usability Testing Methoden ziehen zu können, muss zuerst ein Verständnis für Usability Evaluierungen und deren Ziel geschaffen werden. Die Usability Evaluierung wird als die Bewertung der Benutzeroberfläche einer bestimmten Anwendung definiert, um deren tatsächliche oder wahrscheinliche Usability zu bestimmen (Alghamdi et al., 2013, S. 63, zitiert nach Koutsabasis et al., 2007).  Die ISO-Norm 9241-11 beschreibt die Usability als das Ausmaß der Benutzbarkeit eines Produktes durch bestimmte BenutzerInnen in einem bestimmten Nutzungskontext, um ihre Ziele effizient, effektiv und zufriedenstellend erreichen zu können (International Organization for Standardization, 2019).</p>



<p>Die Usability Evaluierung kann formativ oder summativ erfolgen. Die formative Evaluierung hat das Ziel, die Produktentwicklung voranzutreiben und wird daher während der gesamten Entwicklungsphase eines Produktes durchgeführt, wohingegen bei der summativen Vorgehensweise eine abschließende Bewertung im Mittelpunkt steht und daher am Ende der Entwicklung stattfindet (Alghamdi et al., 2013). </p>



<p>Bei der Usability Evaluierung gibt es mehrere etablierte Methoden, wobei das Usability Testing, die Usability Inspection und die Model-Based Evaluierung die am weitest verbreiteten sind. Usability-Tests haben vorrangig das Ziel, Informationen darüber zu erheben, wie BenutzerInnen das System verwenden und lokalisieren bestimmte Problemstellen innerhalb einer Schnittstelle. Gängige Techniken sind hierbei das traditionelle In-Lab Testing und das Remote Usability Testing (Alghamdi et al., 2013).</p>



<h3 class="wp-block-heading">2.1 Traditionelles In-Lab Testing</h3>



<p>Dabei befinden sich sowohl die Usability-SpezialistInnen als auch die ProbandInnen am selben Ort (Schade, 2013).  ModeratorInnen stellen TeilnehmerInnen Fragen und eine Reihe von Aufgaben, die sie bei der Verwendung des zu evaluierenden Produktes durchführen. In-Lab Tests weisen ein kleineres Sample auf und kommen meist in den zuvor erläuterten formativen Studien zum Einsatz, wo im Mittelpunkt die iterative Designverbesserung steht (Tullis &amp; Albert, 2013).</p>



<h3 class="wp-block-heading">2.2 Remote Usability Testing</h3>



<p>Remote Usability Tests sind wie herkömmliche Usability Evaluierungen, mit dem Unterschied, dass TeilnehmerInnen und ModeratorInnen sich an verschiedenen physischen Orten befinden. ProbandInnen interagieren mit dem Softwareprodukt im eigenen Umfeld, wie beispielsweise von Zuhause aus, im Büro oder in einer anderen natürlichen Umgebung (Schade, 2013). Bei den Remote Usability Tests gibt es zwei wesentliche Unterteilungen in der Methodik. Hierbei wird unterschieden, ob es sich dabei um einen synchronen (moderierten) oder asynchronen (nicht moderierten) Usability Test handelt (Alghamdi et al., 2013).</p>



<h4 class="wp-block-heading">2.2.1 Asynchrones Remote Usability Testing</h4>



<p>Laut Alghamdi et al. (2013) sind bei asynchronen remoten Testverfahren BenutzerInnen sowohl räumlich als auch zeitlich von den EvaluatorInnen getrennt. Die TeilnehmerInnen verwenden hierbei ihre eigenen technischen Ressourcen, welche die Benutzeraktivitäten mithilfe interaktiver Programme oder aufgabenbasierten Umfragen steuern und messen (S. 66).</p>



<h4 class="wp-block-heading">2.2.2 Synchrones Remote Usability Testing</h4>



<p>Das synchrone Remote Usability Testing ist eine Methode zur Bewertung der Usability, die eine große Ähnlichkeit mit dem herkömmlichen In-Lab Testen aufweist (Alghamdi et al., 2013, zitiert nach Selvaraj, 2004). Der Hauptunterschied zu traditionellen In-Lab Tests besteht in der natürlichen Umgebung, aus welcher BenutzerInnen an der Studie teilnehmen und diese somit auch eigene Ressourcen verwenden können. Um die Evaluierung zu überwachen, befinden sich Usability-ExpertInnen im Labor und kommunizieren über das Internet mit den BenutzerInnen in Echtzeit (Alghamdi et al., 2013).</p>



<p>Folglich ähneln sich asynchrone und synchrone Remote Usability Tests in der natürlichen Umgebung, in der der Usability Test von den ProbandInnen durchgeführt wird. Traditionelle In-Lab Tests werden im Labor durchgeführt, wo sich ModeratorInnen als auch TeilnehmerInnen am selben Ort zur selben Zeit befinden. Der größte Unterschied, bei moderierten und unmoderierten Remote Usability Tests ist die zeitliche Trennung von ModeratorIn und TeilnehmerIn. Die Zeit stellt folglich auch den wesentlichen Hauptfaktor für die unterschiedliche Vorgehensweisen in diesen beiden Methoden dar, sowohl in der Planung, Verwendung von diversen Tools und Datenerhebungsmethodik. Diese wichtigen Merkmale werden in den nächsten Abschnitten diskutiert.</p>



<h2 class="wp-block-heading">3. Ablauf und Methodik</h2>



<p>Beim asynchronen Remote Usability Testing durchlaufen die TeilnehmerInnen ein vordefiniertes Skript mit Fragen und Aufgaben. Dabei werden die Daten automatisch erfasst und sind für Studien mit vielen TeilnehmerInnen geeignet (Tullis &amp; Albert, 2013). Fragebögen werden verwendet, um BenutzerInnen anzuleiten, anstatt ModeratorInnen einzusetzen, wodurch finanzielle und zeitliche Ressourcen eingespart werden können (Alghamdi et al., 2013).</p>



<p>Ein weiterer Vorteil besteht darin, dass keine Skills für die Moderation benötigt werden, da die vordefinierten Online-Instruktionen die Rolle der EvaluatorInnen ablösen (Moran &amp; Pernice, 2020). Dies bringt jedoch auch den Nachteil mit sich, dass ein Nachfragen bei unklaren Instruktionen während des Testens den TeilnehmerInnen nicht möglich ist. Auch gibt es nicht die Möglichkeit BenutzerInnen zu bitten, einen Kommentar bei Unklarheiten weiter zu elaborieren (Morgan &amp; Pernice, 2020). Daraus wird interpretiert, dass der Durchlauf des Tests und die damit verbundenen Instruktionen mit einer genaueren Planung und verstärkter Durchführung von Pretests verbunden ist als bei In-Lab Evaluierungen und synchronen Remote Tests.</p>



<p>Synchrone Remote Usability Tests ähneln in der Methodik den herkömmlichen traditionellen In-Lab Tests. Anders jedoch als bei In-Lab Studien, wird es bei den moderierten Remote Usability Tests den ProbandInnen ermöglicht, aus ihrer natürlichen Umgebung heraus an dem Prozess teilzunehmen und ihre eigenen PCs zu verwenden (Alghamdi et. Al, 2013). Bei moderierten Remote Tests befinden sich BenutzerInnen und ModeratorInnen gleichzeitig in einer virtuellen Umgebung und kommunizieren in Echtzeit über technische Ressourcen und Anwendungen (Schade, 2013). Beiden Seiten ist es also möglich bei Bedarf weitere Fragen zu stellen oder zur Klärung aufzufordern (Moran &amp; Pernice, 2020). Um dieses Setting bei synchronen Tests zu ermöglichen, kommen Videokonferenz- und Bildschirmfreigabeanwendungen zum Einsatz. Dadurch wird es ModeratorInnen ermöglicht, die Aktivitäten der BenutzerInnen zu beobachten und durch Videoaufzeichnungen die Durchführung der Testszenarien zu protokollieren (Alghamdi et. Al, 2013). Das Evaluierungsteam kann den Test somit auch gleichzeitig verfolgen und die Ergebnisse unmittelbar nach der Sitzung diskutieren (Moran &amp; Pernice, 2020).</p>



<p>Vergleichsweise zu asynchronen Remote Usability Tests werden sowohl bei synchronen remote &#8211; als auch bei den In-Lab Tests Skills für das Moderieren benötigt. Schade (2013) meint hierzu, dass das Interpretieren von Stille am anderen Ende und dadurch das Wählen des richtigen Zeitpunktes für die Fragestellungen remote erschwert werden kann. Das gelte auch für In-Lab Studien, jedoch könnte diese Problematik bei moderierte Remote Tests verstärkt werden. In Bezug auf die Moderation meinen Alghamdi et. Al (2013) sowie Moran &amp; Pernice (2020), dass die Methodik des Lauten Denkens zudem auch nur bei synchronen Remote Tests und In-Lab Tests Sinn ergäbe. Folglich kann diese Technik bei asynchronen Tests nicht die gewünschte Effektivität erzielen, zudem ModeratorInnen für die Anleitung und Aufforderung des lauten Denkens als essenziell angesehen werden können.</p>



<h2 class="wp-block-heading">4. Datenerhebung und Effektivität</h2>



<p>Laut Albert, Tullis und Tedesco (2010) eignen sich asynchrone Usability-Studien zum Erheben sowohl qualitativer als auch quantitativer Daten. Da Daten von vielen Teilnehmern gesammelt werden können, ist es möglich, in kurzer Zeit quantitative Daten aus einer großen Stichprobe zu erheben. Qualitative Daten können zudem beispielsweise über wörtliche Kommentare gesammelt werden, wobei BenutzerInnen ihre Erfahrung mit dem Produkt notieren (Albert, Tullis &amp; Tedesco, 2010). Folglich eignen sich jedoch asynchrone Usability Tests vor allem für quantitative Studien, da hier eine größere Stichprobe als bei In-Lab und synchronen Remote Usability Tests möglich ist.</p>



<p>Tullis &amp; Albert (2013) meinen, dass beim asynchronen Remote Testens die TeilnehmerInnen nicht direkt von den Usability-SpezialistInnen beobachtet werden können, wodurch es schwierig sein kann, problembasierte Daten zu erheben. Während asynchrone Studien eine hervorragende Möglichkeit seien, viele Daten zu sammeln, ist es zudem auch weniger ideal, wenn UX ResearcherInnen einen tieferen Einblick in das Verhalten und die Motivation der BenutzerInnen zu erhalten möchten. Auch Albert, Tullis und Tedesco (2010) sehen die Grenzen im unmoderierten Remote Usability Testing in der Evaluierung der Verhaltensweisen von BenutzerInnen, vor allem wenn komplexere Fragen involviert sind. Hier sei ein traditionelles Lab-Testing oder synchrones Remote Testing geeigneter.</p>



<p>Alghamdi et. al. (2013) äußern hierzu auch, dass der asynchrone Ansatz keine Beobachtungsdaten und Aufzeichnungen von plötzlichem verbalem Verhalten zulässt. Sie meinen, dass das zu einer Einschränkung der Gültigkeit und Genauigkeit der Ergebnisse führt und die Wahrscheinlichkeit verringert, dass Usability-Probleme entdeckt werden. Andererseits kann dies aufgrund der günstigen Kosten und der leichteren Zugänglichkeit für BenutzerInnen möglicherweise bedeuten, dass größere Stichproben analysiert werden könnten, was zu einem genaueren und realistischeren Ergebnis führen würde. Größere Stichproben bieten eine bessere Darstellung der BenutzerInnen, während eine natürliche Testumgebung die Testverzerrung ausgleicht, die in einem Labor auftreten kann. Dies führt häufig dazu, dass sich die Teilnehmer unter Druck gesetzt fühlen, was die Genauigkeit der Usability-Ergebnisse genauso beeinträchtigen kann (Alghamdi et. al, 2013, S.66, zitiert nach Bastien, 2008).</p>



<p>Eine Studie von Alghamdi et. al (2013) untersuchte diese beiden Testmethoden und stellte diese in Bezug auf deren Effektivität gegenüber. Die Untersuchung ergab, dass die synchrone Testmethode im Allgemeinen besser abschneidet als die asynchrone Testmethode, vor allem bei der Identifizierung von Usability-Problemen. Synchrone TestteilnehmerInnen waren zudem effektiver bei der Aufdeckung schwerwiegender und kritischer Usability-Probleme als solche im asynchronen Testdurchlauf. Die asynchronen Testteilnehmer führten die gestellten Aufgaben jedoch schneller aus und es wurde zudem herausgefunden, dass eine positive Korrelation zwischen der aufgewendeten Zeit zur Aufgabenlösung und den entdeckten Problemen bestand.</p>



<p>Daraus wird geschlossen, dass im Allgemeinen zwar eine breitere Stichprobe durch das asynchrone Testen verwendet werden kann, jedoch das Identifizieren von Usability Problemen durch die synchrone Methode effektiver ist. Auch für einen tieferen Einblick in Motivation und Gründe von Verhaltensweisen der BenutzerInnen ist die synchrone remote Methode oder das In-Lab Testen besser geeignet. In Bezug auf Metriken wie das Erheben der Task Performance macht es auch einen Unterschied ob das asynchrone oder synchrone Testen zum Einsatz kommt, zumal ProbandInnen von asynchronen Testverfahren laut der Studie von Alghamdi et. al (2013) eine schnellere Performance bei der Aufgabenerledigung aufweisen. Dabei muss jedoch auch erwähnt werden, dass ein kleines Sample bei dieser Studie verwendet wurde und vermutlich das Ergebnis nicht generalisiert werden kann.</p>



<h2 class="wp-block-heading">5. Dauer der Test-Sessions</h2>



<p>Ein weiterer bedeutender Faktor des asynchronen Testens ist die verfügbare Zeit für die Durchführung. Albert, Tullis und Tedesco (2010) meinen hierzu, dass in den meisten Usability-Labortests, ob persönlich oder synchron remote problemlos 60 bis 90 Minuten dauern können. Die meisten Online-Usability Studien sollten aufgrund der schwindenden Aufmerksamkeit von BenutzerInnen jedoch nur von 15 bis maximal 45 Minuten andauern. Auch Moran und Pernice (2020) nennen hierbei die kürzeren Test-Sessions bei einer durchschnittlichen Dauer von 20 Minuten der nicht moderierten Remote Usability Tests einen Nachteil gegenüber von In-Lab und moderierten Remote Evaluierungen. Die Testsitzungen bei moderierten Remote Usability Tests können hingegen länger dauern und lassen somit Raum für eine explorative Untersuchung des Produktes (Moran &amp; Pernice, 2020).</p>



<p>Daraus wird geschlossen, dass Usability-Tests mit vielen und umfangreichen Aufgabenstellungen, welche länger dauern, entweder synchron remote oder im Labor durchgeführt werden sollten, um die Qualität des Evaluierungsergebnisses möglichst gering zu verzerren.</p>



<h2 class="wp-block-heading">6. Rekrutierung und Qualität des Samples</h2>



<p>Durch Remote Usability Tests wird die Rekrutierung bereits im Allgemeinen erleichtert, da man sich nicht aufgrund von Zeitressourcen und Kosten auf nahgelegene Orte einschränken muss. Auch wird es so ermöglicht, mit weniger Aufwand das Produkt in mehreren Ländern zu evaluieren. Somit wird eine große Reichweite an ProbandInnen ermöglicht (Albert, Tullis &amp; Tedesco, 2010). Speziell das asynchrone Remote Usability Testing bietet für quantitative Daten die Möglichkeit eine größere Stichprobe für den Test zu rekrutieren (Tullis &amp; Albert, 2013). Bei synchronen Remote Usability Tests wird meist ein kleineres Sample verwendet und deckt sich hierbei mit den In-Lab Tests.</p>



<p>Auch Moran und Pernice (2020) sehen in der Rekrutierung die Vorteile im asynchronen Testen. Allerdings erwähnen sie hierbei auch die damit verbundenen Nachteile in der Repräsentativität der BenutzerInnen, der Variabilität in der Motivation und im Engagement der TeilnehmerInnen für den Test und ein erhöhtes Risiko, dass TesterInnen in Ihrer Umgebung abgelenkt werden. Hier meinen sie, dass es weniger wahrscheinlich ist, dass bei der synchronen Evaluierung Teilnehmer Zeit mit Aktivitäten verbringt, die nicht mit dem Test zusammenhängen. Andererseits lässt diese natürliche Umgebung auch Situationen, in denen die BenutzerInnen das Produkt verwenden, realitätsnaher evaluieren, als in In-Lab-Evaluierungen (siehe auch Abschnitt 7). Daraus wird geschlossen, dass es auch stark darauf ankommt, ob diese Merkmale in der Studie von Bedeutung sind. Zudem könnte diese negativen Aspekte durch eine größere Stichprobe ausgeglichen werden. In Bezug auf die Repräsentativität des Samples sehen auch Albert, Tullis und Tedesco (2010) die Verwendung sorgfältig ausgewählter Screener-Fragen und -Kontingente als gute Lösung, um den passenden Teilnehmertyp zu finden und einer negativen Beeinflussung der Repräsentativität entgegenzuwirken.</p>



<h2 class="wp-block-heading">7. Natürliche Umgebung</h2>



<p>In einer typischen Labor-Usability-Studie werden TeilnehmerInnen aufgefordert, eine Reihe von Aufgaben auszuführen. Dabei kann die tatsächliche Erfahrung, die ProbandInnen in ihrer natürlichen Umgebung haben, verloren gehen. Dies können technische Aspekte wie die Größe des eigenen Bildschirms, die Systemleistung oder der verwendete Browser sein. Aber auch ablenkende Situationen im Alltag können somit nicht miteinbezogen werden, die man im Usability Labor so gut es geht kontrolliert (Albert, Tullis &amp; Tedesco, 2010). Folglich kann durch das Remote Usability Testing die Realität bei der Verwendung des Produktes besser miteinbezogen werden.</p>



<p>Laut Albert, Tullis und Tedesco (2010) ist der bedeutendste Punkt der asynchronen Evaluierung, die gegebene Anonymität, wodurch die Beeinflussung des Ergebnisses durch die soziale Erwünschtheit wegfällt. Im Kontext von Usability Tests bedeutet das, dass TeilnehmerInnen die ModeratorInnen möglicherweise nicht enttäuschen möchten und daher ein positiveres Feedback geben, als wenn dieser Moderator nicht anwesend wäre. Online-Usability-Studien schließen diese Beeinflussung aus, da Daten anonym erfasst werden können (Albert, Tullis &amp; Tedesco, 2010). Diese Beeinflussung bleibt sowohl bei In-Lab Tests als auch bei synchronen Remote Tests eine Problematik.</p>



<h2 class="wp-block-heading">8. Fazit</h2>



<p>Im Vergleich zu In-Lab Testing weist sowohl das asynchrone als auch das synchrone Remote Usability Testing einen großen Vorteil in Kosten – und Zeitaufwand auf, da die Reise zum Labor wegfällt. Zudem bietet das remote Testverfahren die Möglichkeit, die natürliche Umgebung der BenutzerInnen miteinzubeziehen. Dies kann vor Allem in Bezug auf die technischen Ressourcen einen Vorteil bieten, weitere Usability Probleme aufzudecken. Die größte Unterscheidung zwischen synchronen und asynchronen Testen ist die zeitliche Trennung, welche wesentliche Merkmale in der Durchführung und Planung bei beiden Methoden mit sich bringt. Bei den asynchronen Evaluierungen durchlaufen TeilnehmerInnen den Test ohne EvaluatorInnen und werden durch automatisierte Instruktionen durch den Test geleitet. Bei synchronen Tests sind ModeratorInnen und TeilnehmerInnen im Gegensatz dazu nicht zeitlich getrennt und kommunizieren über das Internet. Dabei kommen Aufzeichnungs-, Screensharing- und Videokonferenz-Tools sowohl für die Durchführung als auch Protokollierung zum Einsatz.</p>



<p>Unterschiede gibt es in der Dauer der Testsessions. Asynchrone Tests sollen aufgrund der Aufmerksamkeit der BenutzerInnen zirka 20 Minuten dauern, welche eine geringere explorative Untersuchung als bei synchronen remote und In-Lab Tests zu Folge hat. In Bezug auf die Quantität der erhobenen Daten ist bei dem asynchronen Testen eine größere Stichprobe möglich. Diese ist folglich für quantitative Studien sehr gut geeignet. Andererseits bieten synchrone remote &#8211; und In-Lab Tests einen geeigneteren Ansatz, um einen tieferen Einblick in die Verhaltensweisen und Motivation der BenutzerInnen zu erlangen. Auch ist die Thinking Aloud Methodik für asynchrone Tests nicht geeignet.</p>



<p>In Bezug auf die Moderation werden hierfür keine Skills beim asynchronen Testen benötigt. Jedoch ist, durch die wegfallende persönliche Moderation, die Planung von automatisierten Instruktionen vermutlich aufwändiger und mit intensiveren Pretests verbunden. In Bezug auf die Effektivität der zwei remoten Testverfahren, zeigte eine Studie, dass synchrone Tests besser abschneiden, wobei hier das Sample gering ausfiel und daher eine Generalisierbarkeit vermutlich nicht möglich ist. Auch in Bezug auf den Vergleich der Repräsentativität und Variabilität von Engagement der TeilnehmerInnen kann gedeutet werden, dass diese eine größere Herausforderung bei asynchronen Tests als bei synchrone und In-Lab Tests darstellt. Wobei im Gegensatz dazu asynchrone Tests als einziger drei Methodem die Anonymität gewährleistet und somit die soziale Erwünschtheit keinen negativen Einfluss auf das Testergebnis nehmen kann.&nbsp;</p>



<p>Folglich bieten alle 3 Verfahren ihre Vor- und Nachteile. Der wesentlichste Punkt ist hierbei, ob es sich um eine quantitative Studie handelt. Dann ist vermutlich die asynchrone Methode am besten geeignet. Möchte man einen tieferen Einblick in Verhalten und Motivation der BenutzerInnen erfassen, sind synchrone Remote oder das In-Lab Usability Testing eine bessere Wahl. In Bezug auf Remote Testing im Allgemeinen in Vergleich mit In-Lab Tests ist wohl auch hier der Kosten- und Zeitaufwand ein bedeutender Faktor, der bei Remote Testing deutlich geringer ist.</p>



<h2 class="wp-block-heading">Literaturverzeichnis</h2>



<p>Alghamdi, A. S. et al. (2013). A Comparative Study of Synchronous and Asynchronous Remote Usability Testing Methods.<em> International Review of Basic and Applied Sciences, 1(3). </em><a href="https://www.researchgate.net/publication/261557037_A_Comparative_Study_of_Synchronous_and_Asynchronous_Remote_Usability_Testing_Methods"><em>https://www.researchgate.net/publication/261557037_A_Comparative_Study_of_Synchronous_and_Asynchronous_Remote_Usability_Testing_Methods</em></a><em></em></p>



<p>Schade, A. (2013, 12 Oktober). <em>Remote Usability Tests: Moderated and Unmoderated</em>. Nielsen Norman Group. <a href="https://www.nngroup.com/articles/remote-usability-tests/">https://www.nngroup.com/articles/remote-usability-tests/</a></p>



<p>Moran, K. &amp; Pernice, K. (2020, 12 April). <em>Remote Usability Tests: Moderated and Unmoderated</em>. Nielsen Norman Group. <a href="https://www.nngroup.com/articles/remote-usability-tests/">https://www.nngroup.com/articles/remote-usability-tests/</a></p>



<p>International Organization for Standardization. (2019). <em>Ergonomics of human-system interaction &#8211; Part 210: Human-centred design for interactive systems</em>. (ISO Standard No. 9241-210:2019). <a href="https://www.iso.org/standard/77520.html">https://www.iso.org/standard/77520.html</a><em></em></p>



<p>Tullis, A. &amp; Albert, B. (2013). <em>Measuring the User Experience: Collecting, Analyzing and Presenting Usability</em> <em>Metrics</em> (2<sup>nd</sup> ed.). Elsevier.</p>



<p>Albert, B., Tullis, A. &amp; Tedesco, D. (2010). <em>Beyond the Usability Lab: Conducting Large-scale Online User Experience Studies</em>. Elsevier.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/in-lab-asynchrones-und-synchrones-remote-usability-testing/">In-Lab -, Asynchrones &#8211; und Synchrones Remote Usability Testing</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Erstellen einer PWA mit React</title>
		<link>https://mobile.fhstp.ac.at/allgemein/erstellen-einer-pwa-mit-react/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Tue, 05 Jan 2021 11:02:56 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8675</guid>

					<description><![CDATA[<p>Progressive Web Apps, kurz PWA, sind Web-Anwendungen, die über den Browser und nicht über eine App-Store-Installation aufgerufen werden. Sie sorgen dafür, dass sich Webapplikationen für BenutzerInnen wie native Applikationen anfühlen, sowohl auf allen mobilen Endgeräten als auch auf allen Plattformen.&#160;Die dafür notwendigen Technologien werden vom Browser zur Verfügung gestellt. PWAs können nützliche Features von Native <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/erstellen-einer-pwa-mit-react/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erstellen-einer-pwa-mit-react/">Erstellen einer PWA mit React</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Progressive Web Apps, kurz PWA, sind Web-Anwendungen, die über den Browser und nicht über eine App-Store-Installation aufgerufen werden. Sie sorgen dafür, dass sich Webapplikationen für BenutzerInnen wie native Applikationen anfühlen, sowohl auf allen mobilen Endgeräten als auch auf allen Plattformen.&nbsp;Die dafür notwendigen Technologien werden vom Browser zur Verfügung gestellt.</p>



<p>PWAs können nützliche Features von Native Apps bieten, wie die Offline-Fähigkeit, Installierbarkeit oder der Empfang von Push-Benachrichtigungen. PWAs verringern also die Lücke zwischen der User Experience in webbasierten und nativen Anwendungen.</p>



<p>Nennenswerte Features sind:</p>



<ul class="wp-block-list"><li>Die Möglichkeit Offline zu laufen</li><li>Eine hohe Performance in Relation zu reinen Webanwendungen</li><li>Background processing mit Serviceworkers in einem separaten Thread</li><li>Der Zugriff auf die Sensoren des Endgeräts</li><li>Die Unterstütztung von Push-Benachrichtigungen</li><li>Installation der App über den Browser/Hinzufügen eines Icons am Homescreen</li></ul>



<p>In diesem Artikel wird erläutert, wie man mit dem leistungsfähigen Framework ReactJs eine React-App für PWAs optimieren kann. Dazu werden wir uns das allgemeine Project-Setup von React ansehen, einen ServiceWorker implementieren, kurz auch das Manifest diskutieren und zum Schluss wie wir unsere App builden und diese installieren können.</p>



<p style="font-size:24px">React Project-Setup</p>



<p>Im ersten Schritt erstellen und initialisieren wir ein neues React-Projekt. Dazu installieren wir uns über NPM das create-react-app Modul in unserem Projekt-Folder. Dieses nimmt uns schon mehrere Konfigurationen und Setup für unsere PWA ab: <em>npm install -g create-react-app</em></p>



<p>Jetzt kannst du über den Befehl <em>create-react-app &lt;app_name&gt;</em> das Projekt erstellen lassen.Ist die Projektstruktur angelegt, führen wir unsere App aus, um zu testen ob das Projekt-Setup funktioniert hat. Dazu wechseln wir in unser neu erstelltes App-Verzeichnis und starten die Webanwendung mit <em>npm start</em></p>



<p>Hat alles funktioniert, solltest du nun folgende Seite über deinen localhost sehen:</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/projectsetup-584x800.png" alt="" class="wp-image-8676" width="219" height="300"/></figure></div>



<p style="font-size:24px">Serviceworker</p>



<p>Im nächsten Schritt schauen wir uns den Public-Folder genauer an. Hier müssen wir nun einige Konfigurationen vornehmen, dass wir unsere erstellte React-App für eine PWA optimieren. Dafür brauchen wir im ersten Schritt einen Serviceworker.</p>



<p>Die technische Grundlage für eine PWA bilden die Serviceworker. Ein Serviceworker ist ein Code, den dein Browser im Hintergrund verarbeitet, um die Offline-Fähigkeit für Webanwendungen zu ermöglichen. Es fängt Requests vom Netzwerk ab und verarbeitet sie als Vermittler zwischen deinem Browser und dem Netzwerk. Dieses Skript ist nur im Produktionsmodus aktiv und übernimmt also das Caching und Ausliefern der Assets der Web-App.</p>



<p>Um den Serviceworker zu verwenden brauchen wir in unser public/index.html im body-Tag eine Abfrage, ob der Serviceworker von dem verwendeten Browser überhaupt unterstützt wird. Wenn ja, soll dieser beim Laden registriert werden.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>&nbsp;<em>&nbsp;&lt;body&gt;</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>&lt;noscript&gt;You&nbsp;need&nbsp;to&nbsp;enable&nbsp;JavaScript&nbsp;to&nbsp;run&nbsp;this&nbsp;app.&lt;/noscript&gt;</em></p>



<p>&nbsp;&nbsp;&nbsp;<em>&nbsp;&lt;div&nbsp;id=&#8221;root&#8221;&gt;&lt;/div&gt;</em></p>



<p>&nbsp;<em>&nbsp;&nbsp;&nbsp;&lt;script&gt;</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;if(&#8216;serviceWorker&#8217;&nbsp;in&nbsp;navigator){</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>window.addEventListener(&#8216;load&#8217;,&nbsp;()=&gt;{</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;navigator.serviceWorker.register(&#8216;./serviceworker.js&#8217;)</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>.then((reg)=&gt;&nbsp;console.log(&#8216;Success&#8217;,&nbsp;reg.scope))</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;.catch((err)&nbsp;=&gt;&nbsp;console.log(&#8216;Failure&#8217;,&nbsp;err));</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;})</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>}</em></p>



<p>&nbsp;&nbsp;&nbsp;<em>&nbsp;&lt;/script&gt;&nbsp;&nbsp;&nbsp;</em></p>



<p><em>&nbsp;&nbsp;&lt;/body&gt;</em></p>
</div></div>



<p>Diese Codezeilen ermöglichen es uns nun, einen eigenen Serviceworker zu verwenden, dazu legen wir uns das definierte Script serviceworker.js im public-Folder an.</p>



<p>Um das ganze zu testen, öffnen wir die Developertools im Browser. Hier haben wir die Möglichkeit unter dem Reiter „Application“ unseren Serviceworker und das Manifest (dazu später mehr) anzusehen. Wichtig dabei ist, dass wir für das Testen den „Reload“ aktivieren. Danach löschen wir den Storage und laden die Seite nochmal neu, um zu sehen, ob unsere Registrierung erfolgreich war.</p>



<p>Nun brauchen wir Events und Konfigurationen für unseren Serviceworker. Das ist zum Einen der Cache und die Urls die gecached werden sollen. Dabei haben wir die „normale“ <em>index.html</em> und eine <em>offline.html</em> die angezeigt werden soll, wenn keine Internetverbindung besteht.</p>



<p><em>//cache&nbsp;aktivieren</em></p>



<p><em>const&nbsp;CACHE_NAME&nbsp;=&nbsp;&#8220;version-1&#8221;;</em></p>



<p><em>const&nbsp;urlsToCache&nbsp;=&nbsp;[&#8220;index.html&#8221;,&nbsp;&#8220;offline.html&#8221;];</em></p>



<p><em>//das&nbsp;ist&nbsp;der&nbsp;serviceworker</em></p>



<p><em>const&nbsp;self&nbsp;=&nbsp;this;</em></p>



<p>Events brauchen wir drei. Das erste Event installiert unseren Serviceworker. Wir öffnen damit den Cache und fügen unsere definierten Files hinzu:</p>



<p><em>//event für die Installation des ServiceWorkers</em></p>



<p><em>self.addEventListener(&#8220;install&#8221;,&nbsp;(event)=&gt;{</em></p>



<p><em>&nbsp;&nbsp;event.waitUntil(</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>caches.open(CACHE_NAME)</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>.then((cache)=&gt;{</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>console.log(&#8220;Opened&nbsp;Cache&#8221;);</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;return&nbsp;cache.addAll(urlsToCache);</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>})</em></p>



<p>&nbsp;&nbsp;<em>)</em></p>



<p><em>})</em></p>



<p>Nun probieren wir das Ganze im Browser aus. Wir löschen unseren Browser-Storage und laden die Seite neu. Danach solltest du, wenn alles funktioniert hat, die entsprechende „Opened Cache“-Message in der Konsole sehen. Beim erneuten „Reload“ sollte die Meldung nicht mehr ausgegeben werden, da nun der Cache bereits verwendet wird.</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="858" height="371" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/cache_indexoffline.png" alt="" class="wp-image-8677"/></figure>



<p>Nun bauen wir uns einen EventListener der auf unsere Anfragen horcht. „Requests“ können beispielsweise Images oder API-Calls sein. Wenn das Holen der angefragten Ressource fehlschlägt, bedeutet das, dass wir keine Internetconnection haben und liefern die offline.html zurück.</p>



<p><em>//auf&nbsp;Request&nbsp;horchen</em></p>



<p><em>self.addEventListener(&#8220;fetch&#8221;,&nbsp;(event)&nbsp;=&gt;&nbsp;{</em></p>



<p><em>&nbsp;&nbsp;//&nbsp;Antwort mit angeforderter Ressource</em></p>



<p><em>&nbsp;&nbsp;event.respondWith(</em></p>



<p>&nbsp;&nbsp;<em>&nbsp;&nbsp;//Request beispielsweise ein Image oder API-Call</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>caches.match(event.request)</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;.then(()=&gt;&nbsp;{</em></p>



<p>&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fetch(event.request)</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;.catch(()=&gt;&nbsp;caches.match(&#8220;offline.html&#8221;))</em></p>



<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})</em></p>



<p><em>&nbsp;&nbsp;)</em></p>



<p><em>})</em></p>



<p>Im nächsten Schritt brauchen wir noch einen EventListener der uns unseren Serviceworker aktiviert.</p>



<p><em>//aktivieren&nbsp;des&nbsp;SW</em></p>



<p><em>self.addEventListener(&#8220;activate&#8221;,&nbsp;(event)&nbsp;=&gt;&nbsp;{</em></p>



<p><em>&nbsp;&nbsp;const&nbsp;cacheWhitelist&nbsp;=&nbsp;[];</em></p>



<p><em>&nbsp;&nbsp;cacheWhitelist.push(CACHE_NAME);</em></p>



<p><em>&nbsp;&nbsp;event.waitUntil(</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>caches.keys().then((cacheNames)&nbsp;=&gt;&nbsp;Promise.all(</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;cacheNames.map((cacheName)&nbsp;=&gt;&nbsp;{</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;if(!cacheWhitelist.includes(cacheName)){</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>return&nbsp;caches.delete(cacheName);</em></p>



<p>&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;})</em></p>



<p>&nbsp;&nbsp;<em>&nbsp;&nbsp;)</em></p>



<p><em>&nbsp;&nbsp;))</em></p>



<p><em>})</em></p>



<p>Der Serviceworker ist nun soweit fertig! Jetzt kannst du dir eine x-beliebige offline.html Seite erstellen und dann testen wir den Code. Wenn alles funktioniert hat, wird immer der aktuellste Cache herangezogen und die Offline-Seite angezeigt werden, wenn keine Internetverbindung besteht. Dazu kannst du in den Entwicklertools den Reiter „Network“ verwenden. Hier stellen wir auf Offline um und laden die Seite neu.</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1199" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/offlinemodus-1199x800.png" alt="" class="wp-image-8678"/></figure>



<p>Das war der schwierigste Teil! Mit dem Lighthouse-Audit schauen wir uns nun an, wie gut unsere App bereits für die PWA optimiert ist. Dazu lassen wir uns den Lighthouse-Bericht erstellen. Diesen findest du im Reiter &#8220;Lighthouse&#8221; in den Entwicklertools. Achtung! – gehe sicher, dass du auch den Network-Mode wieder auf Online umgestellt hast. Mit unseren derzeitigen Konfigurationen sollte der Report für die PWA schon relativ gut aussehen.</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1081" height="790" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/audit_1_failures.png" alt="" class="wp-image-8679"/></figure>



<p>Dank unserer Initialisierung durch create-react-app wurden uns schon Konfigurationen für das Manifest abgenommen.</p>



<p style="font-size:24px">Manifest</p>



<p>Ein Web-App-Manifest ist standardmäßig in Create-React-App enthalten und ermöglicht es jedem, die React-Anwendung auf seinem Gerät zu installieren. In React ist das Manifest ein ganz normales Json-File wo verschiedene Properties definiert werden können, wie die App auf dem Homescreen nach Installation aussehen soll. Standardmäßig sind das der Name, die Beschreibung, das App Icon, die Theme-Farbe, die Display-Settings und auch die Starturl der App, wenn sie geöffnet wird.</p>



<p>Create-React-App hat all diese Konfigurationen bereits für dich vordefiniert, die du ganz einfach an deine eigene React-App anpassen kannst. Wichtig dabei ist, dass du es natürlich auch in deiner index.html einbindest.</p>



<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&nbsp;rel=&#8221;manifest&#8221;&nbsp;href=&#8221;%PUBLIC_URL%/manifest.json&#8221;&nbsp;/&gt;</em></p>



<p>Eine weitere Validierung, die im Lighthouse-Audit fehlgeschlagen ist, ist das maskable icon. Maskable Icons sind ein neues Format, das sicherstellt, dass das PWA-Icon auf allen Endgeräten entsprechend passt. Auf neueren Android-Geräten erhalten PWA-Icons, die nicht dem maskierbaren Symbolformat entsprechen, einen weißen Hintergrund. Um es als „maskable“ zu liefern, geben wir ein weiteres Property „purpose“ im Icons array in unserem Manifest an:</p>



<p><em>…&nbsp;</em></p>



<p><em>&nbsp;&#8220;icons&#8221;:&nbsp;[</em></p>



<p><em>&nbsp;&nbsp;&nbsp;&nbsp;{</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;&#8220;src&#8221;:&nbsp;&#8220;favicon.ico&#8221;,</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&#8220;sizes&#8221;:&nbsp;&#8220;64&#215;64&nbsp;32&#215;32&nbsp;24&#215;24&nbsp;16&#215;16&#8221;,</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&#8220;type&#8221;:&nbsp;&#8220;image/x-icon&#8221;,</em></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&#8220;purpose&#8221;:&nbsp;&#8220;any&nbsp;maskable&#8221;</em></p>



<p>&nbsp;&nbsp;&nbsp;<em>&nbsp;},</em></p>



<p><em>…</em></p>



<p style="font-size:24px">Production-Build</p>



<p>Eine Validierung schlägt beim Lighthouse-Audit noch fehl. Es besteht derzeit noch kein Redirect von HTTP traffic zu HTTPS. Wir müssen also unsere App noch für die „Production“ builden und deployen. Dazu führen wir den Befehl <em>npm run build</em> aus, der uns unsere gesamten Ressourcen unseres Projektes „bundlet“ und einen Build-Ordner erstellt.</p>



<p>Um nun unseren Build zu veröffentlichen und zu testen, kannst du für Testzwecke beispielsweise die Seite netlify verwenden. Nach Veröffentlichung, wenn du den Weblink nun öffnest, solltest du eine fertig optimierte React PWA haben. Dazu kannst du sicherheitshalber erneut die oben beschriebenen Tests auf der Webseite und den Lighthouse-Audit durchlaufen lassen. Zum Testen des Offline-Modus würde ich zusätzlich noch empfehlen, einmal wirklich das Internet abzuschalten.</p>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="544" height="239" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/audit_1_optimized.png" alt="" class="wp-image-8680"/></figure>



<p style="font-size:24px">Installieren der App</p>



<p>Unsere PWA ist nun fertig optimiert und nun können wir die App auch installieren. In deinem Browser siehst du ein Plus-Symbol, welches dir erlaubt, die App auf deinen Homescreen hinzuzufügen und als App auszuführen. Dasselbe funktioniert über „App installieren“ am Smartphone über Chrome. Sobald du auf Installieren klickst, wird automatisch eine Verlinkung auf deinem Desktop erstellt und die App installiert.</p>



<figure class="wp-block-image size-large is-resized is-style-default"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/install_app.png" alt="" class="wp-image-8681" width="359" height="202"/></figure>



<p>Fertig ist deine erste React PWA!</p>



<p>Tipp: Es gibt auch einen eigenen Store für Progressive Web Apps wo du deine PWA veröffentlichen kannst. Diesen findest du unter <a href="https://progressiveapp.store">https://progressiveapp.store</a></p>



<p style="font-size:24px">Zusammenfassung</p>



<p>Zusammengefasst sind PWAs Apps die über den Browser aufgerufen werden, sich jedoch wie Native Apps anfühlen. Sie bieten nützliche Features von Native Apps, wie die Offline-Fähigkeit, Installierbarkeit und weisen eine weit bessere Performance als reine Webanwendungen auf. Sie verringern die Lücke zwischen der User Experience in webbasierten und nativen Anwendungen.</p>



<p>Zusätzlich wurde erläutert, wie eine React-App erstellt und für PWAs optimiert werden kann. Verwendet haben wir dazu create-react-app, dass uns schon ein Projekt-Setup mit Vorkonfigurationen für unsere PWAs bietet. Auch der Serviceworker war ein großes Thema, der die technische Grundlage von PWAs darstellt. Mit Serviceworker kann eine PWA Ressourcen cachen und diese zwischensgepeicherten Daten verwenden, wodurch eine bessere UX ermöglicht wird. Damit können Web-Apps dynamisch geladen werden, während man durch die App navigiert und den Datenverkehr minimiert. Zusätzlich haben wir erfahren, dass uns das Manifest Konfigurationen für den Homescreen und die Installation ermöglicht. &nbsp;Mit dem Lighthouse-Audit kann man PWAs auf ihre Optimierung testen. Schlussendlich wurde erläutert, wie man am Ende die PWA &#8220;buildet&#8221; und auf dem Endgerät installiert.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erstellen-einer-pwa-mit-react/">Erstellen einer PWA mit React</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print to Mobile &#8211; HikingGuide</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/print-to-mobile-hikingguide/</link>
		
		<dc:creator><![CDATA[Michaela Buschberger]]></dc:creator>
		<pubDate>Mon, 04 Jan 2021 13:07:04 +0000</pubDate>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8646</guid>

					<description><![CDATA[<p>Wer gerne in beliebten Wanderregionen Urlaub macht, kennt die Situation wo man nach die für sich perfekten Wanderrouten ewig sucht. Man muss selbst die Informationen zusammentragen und sich durch die von den Wanderhotels auf Informationstischen bereitgestellten Informationsblätter oder Reiseführer mühsam durchblättern. Die Beschreibungen sind zwar meist informativ und detailreich, schlussendlich muss man sie aber extra <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/print-to-mobile-hikingguide/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/print-to-mobile-hikingguide/">Print to Mobile &#8211; HikingGuide</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wer gerne in beliebten Wanderregionen Urlaub macht, kennt die Situation wo man nach die für sich perfekten Wanderrouten ewig sucht. Man muss selbst die Informationen zusammentragen und sich durch die von den Wanderhotels auf Informationstischen bereitgestellten Informationsblätter oder Reiseführer mühsam durchblättern. Die Beschreibungen sind zwar meist informativ und detailreich, schlussendlich muss man sie aber extra abfotografieren, oder gar sich einen eigenen Reiseführer kaufen. Auch Wanderkarten geben oft nur spärlich Auskunft über den Weg oder sind für „Wandereinsteiger“ schwer zu lesen.</p>



<p>Im Rahmen der MKL „Mobile“ wurde daher die responsive Webanwendung HikingGuide implementiert. Die Aufgabenstel­lung bestand in der Erstellung und Implementierung eines Konzeptes, bei der ein QR-Code sinnhaft zum Einsatz kommen kann.</p>



<p>Der HikingGuide stellt Informationen über Wander­routen einer Region digital zur Verfügung. Die Idee bestand darin, Flyers mit dem QR-Code für die Webapp auf Infor­mationstischen von Wanderhotels zu platzieren. Der QR-Code soll dabei direkt auf die Region des Wanderhotels verweisen, um so direkt auf die gewünschten Wanderrouten zu gelangen. Die Anwendung differenziert hierbei auf die Regionen von Österreich, beispielsweise beliebte Wanderziele wie Fieberbrunn oder das Salzkammergut. Zudem zeigt es in einer Übersicht wichtige Tourdaten wie Schwierigkeitsgrad, Kilometer, Dauer und natürlich auch die Höhenmeter. Hat man die passende Route gefunden, kann durch eine Detailseite die Wegbeschreibung und Bilder der Route eingesehen werden. Zudem soll es die Möglichkeit bieten, eine digitale Wanderkarte über GPX oder auch die Wegbeschreibung als PDF herunterzuladen, um so während der Wanderung auch offline zur Verfügung zu stehen.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/01/Projektvorschau-1540x800.jpg" alt="" class="wp-image-8647" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2021/01/Projektvorschau-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2021/01/Projektvorschau-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>



<p><strong>Folgende Technologien wurden für das Projekt verwendet:</strong></p>



<p>ReactJS, React Bootstrap, SCSS, Laravel (PHP Framework), MySQL, REST API</p>



<p><strong>Probiers aus!</strong></p>



<p>Unter folgenden Link gelangst du zu der Web-Anwendung:</p>



<p><a href="http://flock-1583.students.fhstp.ac.at">http://flock-1583.students.fhstp.ac.at</a></p>



<p><strong>WICHTIG</strong>: Im Rahmen dieses Projektes wurden keine „echten“ Tourdaten oder GPX-Dateien passend zu der beschriebenen Route verwendet! Der Content dient daher nur als Repräsentation von Funktionalitäten der App.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/print-to-mobile-hikingguide/">Print to Mobile &#8211; HikingGuide</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
