Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Joao Rodrigues

23. Februar 2024

Min Read

SnapTrash: Entsorgen Sie Plastikmüll mit Ihrem Handy

Eine kleine App mit einem großartigen Zweck. So lässt sich das am besten beschreiben SnapTrash, eines unserer neuesten Projekte und eines der ersten, die wir entwickeln, seit wir das Wechseln Sie von Ruby on Rails zu einem vollständigen JavaScript-Stack. Hier lernst du diese iOS-App sowie den Entwicklungsprozess auf der Grundlage ihrer ersten Version kennen, die bald im App Store verfügbar sein wird.

blue arrow to the left
Imaginary Cloud logo

Was ist SnapTrash und warum ist es relevant

SnapTrash Interface

SnapTrash ist eine iOS-App, mit der Sie Plastikmüll melden können, der möglicherweise an Stränden gefunden wird, indem Sie nur die Kamera Ihres Telefons verwenden und

GPS. Jedes Foto wird in eine Datenbank hochgeladen, auf die über die App zugegriffen werden kann und die den Standort des Fotos, seine Koordinaten und den Benutzernamen des Uploaders enthält.

Diese Datenbank wird verwendet, um regelmäßige Plastiksammlungen zu organisieren und so dazu beizutragen, die Strände sauber und das Meer plastikfrei zu halten. Ihre Bedeutung ist ebenso groß wie ihr Zweck, da jedes Jahr acht Millionen Tonnen Plastik in den Ozean gelangen und für den Tod mehrerer Meerestierarten verantwortlich sind, die es täglich aufnehmen.

Der Benutzer kann sich auf einer Karte, die über eine Reihe intuitiver Symbole in die App integriert ist, einen globalen Überblick über alle gemeldeten Fotos verschaffen. Obwohl das Hauptziel der App darin besteht, Sammlungen großer Mengen an Plastik zu organisieren, wird der Benutzer auch ermutigt, selbst Maßnahmen zu ergreifen, wann immer dies möglich ist.

Mit Blick auf Einfachheit entworfen

Die Designherausforderung bei SnapTrash bestand darin, es so einfach und intuitiv wie möglich zu gestalten, ohne zu viel Zeit mit Details zu verschwenden, die keinen Mehrwert bieten würden. Aus diesem Grund ist die Oberfläche so einfach und übersichtlich wie möglich, sodass die gewünschten Aufgaben sehr einfach ausgeführt werden können. Nach der Anmeldung sind nur ein paar Klicks erforderlich, um ein Foto zu melden. Dies ist so einfach wie das Teilen von Medien auf Instagram oder Snapchat.

Müllsäcke auf der Karte stellen eine Galerie mit Fotos an einem beliebigen Ort dar. Wenn Sie die Ansicht vergrößern, werden sie auf jedem einzelnen Foto verteilt. Die übrigen Symbole und Schaltflächen nehmen nicht viel Platz auf dem Bildschirm ein und wurden entworfen, um die Aufmerksamkeit des Benutzers auf den Hauptzweck von SnapTrash zu lenken: den Ozean plastikfrei zu halten.

SnapTrash User Experience
blue arrow to the left
Imaginary Cloud logo

Entwicklung von SnapTrash

Von Anfang an bestand meine Aufgabe darin, eine mobile App zu entwickeln, mit der sich Benutzer über Facebook anmelden und Fotos von Plastik machen und sie auf einer Karte veröffentlichen konnten. Zu der Zeit experimentierte ich noch mit Strapi (Sie können es rezensiert finden hier) und es schien für diese Aufgabe geeignet zu sein. Um die App selbst zu entwickeln, habe ich mich für Folgendes entschieden Reagieren Sie nativ.

Die Serverseite: Strapi

Um die Fotos in der App sichtbar zu halten, musste ich einen Weg finden, sie zusammen mit allen relevanten Informationen zu den einzelnen Fotos auf einem Server zu speichern. Zu diesem Zeitpunkt ist die Serverseite für Benutzer im Allgemeinen nicht sichtbar und dient nur als Datenspeicher.

Um dies zu erreichen, schien Strapi ein gutes Tool für diesen Job zu sein, mit nur einer Einschränkung: Es ist auf die Entwicklung von Web-Apps ausgerichtet. Folglich funktioniert das SDK in React Native nicht vollständig und Sie können das SDK auch nicht für die native Facebook-Anmeldung verwenden. In jedem Fall ist das Strapi-Facebook-Login jetzt kaputt, da Facebook den HTTPS-Rückruf zur Pflicht gemacht hat und Strapi nur Callback-URLs mit HTTP generiert.

Am Ende werden die Bilddateien über den Endpunkt /upload auf den Strapi-Server hochgeladen, und das Fotomodell verweist auf diese Datei. Darüber hinaus werden der Ort, an dem das Foto aufgenommen wurde, und die Anmeldeinformationen von Facebook (Token, Benutzer-E-Mail und Benutzername) gespeichert. Das war alles, was ich von der Serverseite brauchte.

Die iOS-App: React Native

In Bezug auf die App selbst bestand meine erste Aufgabe darin, einfach eine Karte anzuzeigen, was einfach genug klang. Wenn Sie jedoch mit dem React Native CLI-Tool loslegen, werden Sie große Probleme haben. Die Anweisungen zum Einrichten von React-Native-Maps sind für jemanden, der keine Erfahrung in der Entwicklung für Native hat, unverständlich. Zum Glück ist der CLI entzünden hat ein Plugin, das es sehr einfach macht, Karten zu Ihrer App hinzuzufügen.

Um den Standort des Fotos zu ermitteln, musste ich den aktuellen Standort des Benutzers verfolgen, was angesichts der verfügbaren Dokumentation möglicherweise leichter gesagt als getan ist. Hier Sie werden schlechte Unterlagen dazu finden, wie das geht. In beiden Fällen lassen sie es jedoch viel intuitiver erscheinen, als es tatsächlich ist.

Nachdem ich die Map zum Laufen gebracht hatte, hatte ich noch ein paar Probleme, die ich lösen musste, um SnapTrash zum Testen bereit zu haben:

  • C++-Ausnahme (weder Objective-C noch ein Swift-Fehler, C++!) : Als ich zum ersten Mal versuchte, der Karte mit React-Native-Maps Markierungen mit den Müllsack-Symbolen hinzuzufügen, traten einige unwillkommene Probleme auf. Die Lösung, die ich gefunden habe, bestand darin, die Bilder zweimal zur Ansicht hinzuzufügen. Das erste Mal war vor der Kartenansicht (die dann hinter der Karte versteckt wird) und das zweite Mal an den Marker-Komponenten.

  • Clusterbildung: Wenn es darum ging, Bilder in Gruppen zu gruppieren, was durch einen einzigen Müllsack repräsentiert wurde, war die beste Lösung die Verwendung von React-Native-Maps-Super-Cluster. Ich habe schon einmal sowohl React-Native-Clustering als auch React-Native-Cluster ausprobiert und festgestellt, dass sie viel schwieriger zu installieren sind oder eine Dokumentation hatte, die nicht sehr klar war.

  • Überlagerung: Das Overlay ermöglicht die Vollbildansicht über die Karte und hier stieß ich auf ein weiteres Problem, da ich nicht herausfinden konnte, wie man zwei Ansichten mit position:absolute übereinander legt (Overlay über der Karte). Ich musste eine Beta-Version von React-Native-Elements überprüfen, wo ich eine Overlay-Komponente gefunden habe, die ich als Basis für den Foto-Slider verwenden könnte, was mich zur nächsten Ausgabe bringt.

  • Foto-Slider: Ich musste das Overlay ändern, um die TouchableWithoutFeedback-Komponenten zu entfernen, da sie die Ereignisse aufzeichneten, die der Slider zum Scrollen benötigt. Bei Verwendung des Debuggers funktionierte der Slider hervorragend, aber wenn er ausgeschaltet war, waren die TouchableWithoutFeedback-Komponenten ein Problem. Mit React-Native-Carousel konnte ich den Slider dazu bringen, genau das zu tun, was der Designer für die App geplant hatte.

  • 3D-Touch: Touchables funktionieren nicht gut mit 3D-Touch Bildschirme, wenn eine innere Ansicht die Position: absolut hat. Die Lösung bestand darin, das Touchable in eine Ansicht einzubinden, die die Schaltfläche richtig positioniert.

Anstatt:


Die Lösung besteht darin, die position:absolute Ansicht außerhalb von Touchable zu verschieben:


  • Styling: Ich habe versucht, die Kameraaufnahmetaste mit zwei Ansichten zu erstellen: eine Außenansicht mit Opazität 0,5 und eine Innenansicht mit Opazität 1. Auf diese Weise überschreibt jedoch die äußere Opazität die innere Opazität. Am Ende stellte ich fest, dass es eine Lösung gab, um das Problem zu umgehen, indem ich die Bilder aus Sketch exportierte.

Die besten Lösungen für diese Probleme zu finden, war einer der besten Aspekte bei der Entwicklung von SnapTrash, da ich genau verstehen konnte, warum es so wichtig war, dass alles so reibungslos wie möglich lief. Das Nutzererlebnis sollte nicht durch kleinere Probleme ruiniert werden, die die App von ihren Zielen abhalten würden.

blue arrow to the left
Imaginary Cloud logo

Abschließende Bemerkungen

SnapTrash war ein großartiges Projekt, an dem man arbeiten konnte, und es ist eine App mit einem sehr wichtigen Zweck, da sie eines der schwerwiegendsten Probleme angeht, mit denen wir derzeit auf globaler Ebene konfrontiert sind. Was die Entwicklung anbelangt, so war es aufregend, mit ein paar neuen Tools zu arbeiten, da dies eine der ersten Entwicklungen für mobile Apps war, die ich gemacht habe. Im Folgenden sind die wichtigsten Erkenntnisse aufgeführt, die ich aus diesem Projekt mitgenommen habe.

  • Seien Sie vorsichtig, wenn Sie Strapi verwenden. Obwohl es meiner Erfahrung nach einfach genug war, gab es immer noch ein paar Probleme zu melden. Es unterstützt weder Authentifizierungsanbieter, die HTTPS verwenden, noch unterstützt das aktuelle SDK React Native. Zur Verteidigung: Strapi ist immer noch in der Alpha-Version (ich habe Alpha-14 verwendet) und es gibt noch viel Verbesserungspotenzial.

  • In Bezug auf React Native werden Sie eine schlechte Zeit haben, wenn Sie noch nie nativ entwickelt haben, was angesichts der fehlenden Dokumentation von Anfang an vorausgesetzt wird. Dies wird dazu führen, dass Sie einige Fehler von der nativen Seite haben und keine Ahnung haben, wie Sie diese sofort beheben können.

  • Einige Pakete, wie React-Native-Maps, sind ein Chaos, wenn Sie Ihrem Projekt hinzufügen, da Sie sich in native Konfigurationsdateien einmischen und Pakete manuell zur nativen Seite hinzufügen müssen. Zum Glück werden einige dieser Schmerzen bereits durch die Ignite-Boilerplates behoben.

  • Das Styling sieht aus wie CSS, ist es aber nicht. Um zum Beispiel zwei Divs mit absolute:position übereinander zu platzieren, musste ich eine Overlay-Komponente von react-native-elements verwenden. Es ist nicht vergleichbar mit reiner nativer Leistung, aber selbst wenn man das berücksichtigt, dauert die Navigation manchmal zu lange. Wenn man zum Beispiel die Kamerataste schnell genug drücken könnte, würden zwei Kamerabildschirme in den Navigationsstapel verschoben.

Alles in allem sind diese Probleme jetzt weit zurückgeblieben und SnapTrash wird bald veröffentlicht. Die Erfahrung bei der Entwicklung war fantastisch, aber ich bin fest davon überzeugt, dass das Ergebnis noch besser sein wird.

Wenn Sie Hilfe bei der Entwicklung von mobilen oder Web-Apps suchen, freut sich unser Team auf Sie! Schreiben Sie uns eine Nachricht hier!

Ready for a UX Audit? Book a free call

Fanden Sie diesen Artikel hilfreich? Diese könnten dir auch gefallen!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Joao Rodrigues
Joao Rodrigues

Full-Stack-Entwickler, Moderator von Lunch-Umfragen und stolz darauf, einen sehr spezifischen und seltenen Sinn für Humor zu haben, der missverstanden wird. Und das gilt in der Regel auch für meine Mittagsumfragen.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon