[JAVA] Ich habe eine passende App erstellt (Android App)

Einführung

Hallo. Wir haben eine passende App "Match-com" für den Einsatz als Ingenieur erstellt. Die Entwicklungszeit beträgt etwa eineinhalb Monate.

Was für eine App?

feature.png

Es ist eine passende App für Männer und Frauen. Ich denke, jeder hat es einmal benutzt. Wenn Sie sich mögen, können Sie übereinstimmen und chatten.

** Haupteigenschaften ** ・ Feuerbasis ・ E-Mail-Login / Facebook-Login · Profilregistrierung ·Wie schön! · Matching ・ Echtzeit-Chat ·Block ・ Fotoregistrierung / Profilbearbeitung

Ich hatte vor, meine eigenen Funktionen zu integrieren, aber es dauerte länger als erwartet, wenn ich mich besonders mit den Details befasste. Vorerst wurden die Mindestfunktionen implementiert und es ist eine Form geworden. Sobald ich mit der Jobsuche beginne und mich beruhige, plane ich, wieder verschiedene Funktionen hinzuzufügen.

Was ich schwer hatte

·Fehler Der Fehler brachte mich zum Kampf. Selbst wenn ich dachte, dass es abgeschlossen ist, entdeckte ich manchmal ein seltsames Verhalten oder die Anwendung selbst fiel im Verlauf der Entwicklung aus.

Es ist ziemlich schwierig, von einem Ort voller Leistung fallen gelassen zu werden. Es ist, als würde sie von ihr erschüttert, die viele Male angegriffen hat und sich in drei Tagen endlich mit ihr verstanden hat.

・ ** Süße des Designs ** Es war das erste Mal, dass ich eine Funktion entwickelte, die ich noch nie zuvor ausgeführt hatte, und es dauerte lange. Ich habe schon früher einfache Apps erstellt, konnte aber im Allgemeinen mein Wissen nutzen.

Diesmal habe ich es jedoch ernsthaft gemacht, also habe ich verschiedene Dinge untersucht und implementiert, während ich es so modifiziert habe, dass es mit meinem eigenen Code funktioniert. Insbesondere gab es Orte, an denen ich am Anfang nicht richtig entworfen habe, und obwohl ich die Bedeutung des Entwurfs durch Ändern des Codes, den ich oft geschrieben habe, erneut bekräftigen konnte, war er etwas effizienter, da er an seltsamen Orten Zeit in Anspruch nahm. Ich wünschte, ich könnte es gut entwickeln.

Gut zu entwickeln

・ ** Gewohnheit, Dokumente zu lesen ** In dieser Entwicklung haben wir Firebase ernsthaft eingeführt, aber es war eine gute Erfahrung, sich daran zu gewöhnen, die Dokumente dort zu lesen. Natürlich gab es viele nützliche Dinge wie Qiita-Artikel und japanische Referenzmaterialien, aber wenn es um Details ging, musste ich Dokumente und englische Artikel lesen, und infolgedessen konnten Allergien gegen Dokumente stark reduziert werden. Ich tat.

・ ** Bedeutung des Englischen ** Es gibt oft eine Debatte wie "Brauche ich Englisch, um Ingenieur zu werden?". Es ist jedoch nicht immer notwendig, einen Job als Ingenieur zu bekommen, aber es ist effizienter, von nun an selbst Programmieren zu lernen. Es gab viele Szenen, die ich dachte. Der Inhalt des Artikels, zu dem ich nach der Suche auf Japanisch endlich gelangt bin, steht bei der Suche auf Englisch ganz oben, weil er in Zara war. Ich denke, es wird lange dauern, wenn ich gebeten werde, diese App nur mit japanischen Materialien zu implementieren.

・ ** Fähigkeit, Informationen zu organisieren ** Wenn es sich um eine einfache Implementierung handelt, können Sie eine Tutorial-ähnliche Implementierung finden und ein wenig ändern. Wenn Sie jedoch komplizierte Dinge tun möchten, ist es selten, dass eine Quelle alles lösen kann, und Sie müssen mehrere Informationen im Internet kombinieren und in Ihren Fall einfügen. Als ich versuchte, eine solide Anwendung zu erstellen, hatte ich das Gefühl, dass ich diese Art von "Fähigkeit zur umfassenden Interpretation von Informationen" auf natürliche Weise erworben habe.

・ ** Vertrauen, das abgeschlossen wurde ** Vor und nach dem Erstellen der App habe ich viel Vertrauen in die Entwicklung gewonnen. Zuerst war ich zu 90% besorgt, ob es wirklich fertiggestellt werden würde, aber als ich es tatsächlich fertigstellte, kam mir der Gedanke, dass ich einige Apps erstellen könnte. Schließlich ist es einfacher, Ihre Fähigkeiten zu verbessern, da Sie sie anwenden können, indem Sie etwas machen, anstatt ständig mit Unterrichtsmaterialien zu lernen. Schließlich ist es am besten, beim Machen zu lernen. Wenn das anfängliche Wissen jedoch zu klein ist, wird es Orte geben, an denen es gewaltsam mit Macht umgesetzt wird. Ich denke, dass es auch möglich ist, systematisches Wissen zu erlernen, es dann tatsächlich zu machen und das vorhandene Wissen zu konkretisieren. Ich werde.

App Einführung

Damit ist die kurze Übersicht über die oben erstellte App abgeschlossen. Danach werden wir die von uns erstellten Apps vorstellen. Wenn Sie also Zeit haben, schauen Sie bitte. (Es wird etwas länger dauern!) Grundsätzlich werde ich versuchen, die oben aufgeführten Funktionen der Reihe nach einzuführen. Wie Sie intuitiv sehen können, gibt es nur wenige Charaktere und die Bilder und Videos werden häufig verwendet. Ich konnte es mit GIF nicht gut hochladen, daher habe ich das auf Twitter veröffentlichte mit Bezug auf hier verwendet.

Firebase Diesmal habe ich Firebase für das Backend verwendet. NoSQL war anfangs verwirrt, weil es keine Tabellen wie RDB verbinden konnte, aber als ich mich daran gewöhnt hatte, wurde es sehr einfach zu bedienen und reibungslos.

Service verwendet · Authentifizierung ・ Echtzeitdatenbank ・ Cloud Firestore ・ Cloud-Speicher (zum Speichern von Bildern) ・ Cloud Messaging (wird für Push-Benachrichtigungen verwendet) ・ Dynamische Links (für E-Mail-Links)

E-Mail-Login / Facebook-Login

Der Bildschirm sieht so aus.

login_screen.png

Wenn Sie sich mit einer E-Mail-Adresse anmelden, geben Sie die E-Mail-Adresse ein und drücken Sie die Anmeldeschaltfläche, um einen Passcode auszugeben. Geben Sie die Adresse und den Ausgabecode über den Link in der E-Mail ein, die zur Registrierung oder Anmeldung gesendet wurde.

Die Funktion dieses Mail-Links verwendet dynamische Links. https://firebase.google.com/docs/dynamic-links/android/receive?hl=ja

issue_passcode.png Wenn Sie den Link in der E-Mail öffnen, werden Sie zum Eingabebildschirm weitergeleitet. enter_app.png

Wenn Sie bei Facebook angemeldet sind, können Sie sich nur registrieren, wenn Sie 10 oder mehr Freunde haben.

fb_signin.png

Ich habe die Graph-API von Facebook verwendet, um die Anzahl der Freunde des Benutzers zu ermitteln. https://developers.facebook.com/docs/graph-api/overview

Profilregistrierung

Wenn die Anmeldung mit der oben beschriebenen Methode abgeschlossen ist, wird festgestellt, ob der Benutzer ein neuer Benutzer ist.

Wenn Sie bereits Benutzer sind, wechseln Sie zum Startbildschirm. Wenn Sie ein neuer Benutzer sind, wechseln Sie zum Profilregistrierungsbildschirm. Wenn Sie hier nicht alle Profile eingeben, ist die Schaltfläche inaktiv. (* Ich benutze Twitter, weil ich mit Qiita kein gutes GIF hochladen konnte.)

Wie schön!

Der Startbildschirm sieht so aus. discover.png

Wischen Sie nach rechts, um es zu mögen, wischen Sie nach links, um sich zu entschuldigen.

Sie können zum nächsten Foto wechseln, indem Sie auf das Foto tippen. Sie können zum Bildschirm mit den Benutzerdetails springen, indem Sie unter den Namen tippen.

passend

Wenn die andere Partei Sie auch mag, wird dort ein Matching hergestellt.

Echtzeit-Chat

Dies ist der Chatlistenbildschirm. Dies und der Chat-Bildschirm dauerten am längsten.

Der "übereinstimmende Partner" ist die Person, die übereinstimmt, aber nicht spricht, und der "sprechende Partner" ist die Person, die tatsächlich spricht. Wenn das Spiel innerhalb von 24 Stunden stattfindet, wird oben "Neu!" Hinzugefügt. (Der Grund, warum es schwarz gestrichen ist, ist, dass ich ein anderes Foto als freies Material verwendet habe.) match_overview.png

Das ◯ oben links im Bild "Der andere Gesprächspartner" ist der Anmeldestatus dieses Benutzers.

Grün → online Gelb → Innerhalb von 24 Stunden nach dem letzten Login Grau → 24 Stunden oder länger nach dem letzten Login

Wenn Sie eine Nachricht senden, gelangen Sie zu "der Person, mit der Sie sprechen".

Der Chat-Bildschirm sieht so aus. chat_screen.png Es fiel mir schwer, das Datum unerwartet über die Nachricht zu setzen lol Abgesehen davon war es gut, hier eine einfache Implementierung zu haben, aber ich wollte so viel wie möglich so etwas wie ein reales Projekt machen, also war ich besonders daran interessiert. Die heutige Nachricht wird heute angezeigt, die gestrige Nachricht gestern, andere Nachrichten einschließlich Datum und andere als die diesjährige Nachricht einschließlich Jahr.

Sie können sowohl Fotos als auch Nachrichten senden.

Sie können auch über das Symbol auf dem Chat-Bildschirm zum Detailbildschirm des anderen Benutzers springen.

Block

Wenn Sie einen Benutzer blockieren, verschwindet dieser von der Person, mit der Sie sprechen.

Fotoregistrierung / Profilbearbeitung

Der Profilbearbeitungsbildschirm wurde vereinfacht. tatuya.png

Fotos werden zugeschnitten und registriert.

Sie können es auch durch das Hauptfoto ersetzen.

Wenn das gelöschte Foto das zweite ist, wird das dritte links gepackt. Es bedeutet, dass Sie den Raum nicht ohne Fotos verlassen.

Mit der Profilbearbeitung können Sie grundlegende Informationen zum Benutzer bearbeiten. edit_profile.png

Wenn Sie ein Hobby und eine Sprache registrieren, wird das, was Sie eingeben, zu einem Chip und sammelt sich an. Drücken Sie abschließend die Update-Taste, um das Update abzuschließen.

Push-Benachrichtigung beim Abgleich mit neuer Nachricht

Sie erhalten eine Push-Benachrichtigung, wenn Sie eine neue Nachricht erhalten.

Sie können auch Bilder sowie Text mit Push-Benachrichtigungen senden. Es war ziemlich schwierig, die Push-Benachrichtigung ernsthaft zu implementieren. Dies liegt daran, dass Sie, wenn Sie dies normal tun, empfangen können, wenn die App geöffnet ist, aber nicht, wenn Sie sie schließen. Zu erhalten, auch wenn die App geschlossen ist

** 1 **: Implementieren Sie diese Option, um Push-Benachrichtigungen zum Zeitpunkt der Aktualisierung der Echtzeitdatenbank mithilfe der Cloud-Funktionen von Firebase zu senden ** 2 **: Erstellen Sie eine Klasse, die FirebaseMessagingService erbt, implementieren Sie die Verarbeitung bei der Benachrichtigung, indem Sie die onMessageReceived-Methode überschreiben, und realisieren Sie die Kommunikation zwischen Geräten.

Ich musste es so oder so umsetzen. Ich habe es auf zwei Arten implementiert. Nachrüstung wird für die Kommunikation zwischen Geräten verwendet.

Ich denke, dass sogar Methode 1 lokal mit Node.js usw. implementiert und über die CLI in Firebase bereitgestellt werden kann.

Rückzug

Schließlich gibt es noch die Auszahlungsfunktion. Dies kann am unteren Rand des Profilbearbeitungsbildschirms erfolgen.

Zusammenfassung

Es war das erste Mal, dass ich ernsthaft eine App entwickelte. Nach Abschluss der Erstellung verspürte ich ein Erfolgserlebnis, fühlte mich aber gleichzeitig müde. Ich denke, dass Leute, die von nun an Apps entwickeln, das Design so gut wie möglich kennen sollten.

Andernfalls müssen Sie den Code mehrmals ändern oder stark abhängigen Code schreiben. Es ist immer eine gute Idee, das Solid-Prinzip zu beachten. Der Artikel hier ist hilfreich.

Es kann gut sein, so etwas zu lesen. (Ich habe es noch nicht gelesen) https://www.amazon.co.jp/dp/B07FSBHS2V/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

Ich habe diesmal genug Output gemacht, also werde ich die Menge an Input für eine Weile wieder erhöhen und weiter lernen.

Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Ich habe eine passende App erstellt (Android App)
[Android] Ich habe eine Schrittzähler-App erstellt.
Ich habe eine Taschenrechner-App für Android erstellt
Ich habe eine Janken App mit Android gemacht
Ich habe eine Chat-App erstellt.
Ich habe eine shopify App @java erstellt
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Android-App für den MiRm-Dienst erstellt
Ich habe eine Bibliothek zum Anzeigen von Tutorials auf Android erstellt.
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe ein Tool zur Generierung von package.xml erstellt.
[Rails] Ich habe eine einfache Kalender-Mini-App mit benutzerdefinierten Spezifikationen erstellt.
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Ich habe kürzlich eine JS-App in der gemunkelten Dart-Sprache erstellt
[Ruby] Ich habe einen einfachen Ping-Client erstellt
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe ein neues Java-Bereitstellungstool erstellt
Ich habe eine Frage zu Android Studio.
Android Wetter App
Ich habe StringUtils.isBlank gemacht
Ich habe ein Diff-Tool für Java-Dateien erstellt
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich habe Mosaikkunst mit Pokemon-Bildern gemacht
Ich habe selbst eine App gemacht! (Leseverwaltungs-App)
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich habe mit Ruby On Rails ein Portfolio erstellt
Ich habe eine einfache Grafikbibliothek für Smartphone-Apps erstellt [MP Android Chart Kai]
[Stajun gab auch zu] Ich möchte einen Gourmet-Spiser, aber er kostet 1103,3543 Billionen Yen, also habe ich eine Android-App erstellt
Ich habe ein Docker-Image für die japanische Version von SDAPS erstellt
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Ich habe ein Check-Tool für das Release-Modul erstellt
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Android App Spectrum Analyzer
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
Ich habe ein Symbol, das in Android Studio nicht aufgelöst werden kann
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ich habe eine Bibliothek erstellt, die in Safari wie ein Tab funktioniert !!
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
Informationen zu Android-App-Komponenten
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Hat die Serverseite des Online-Kartenspiels gemacht ⑤
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
Ich habe ein Plug-In erstellt, das Jextract mit Gradle-Aufgaben ausführt
Ich habe die Serverseite des Online-Kartenspiels gemacht made
[Anfänger] Android App, die Bälle mit Sensoren rollt [Java]
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich habe einen MOD erstellt, der sofort ein Fahrzeug mit Minecraft anruft
Ich habe die Serverseite des Online-Kartenspiels gemacht made