[SWIFT] J'ai essayé de créer une application de clonage LINE

introduction

J'ai créé une application de clonage LINE dans le but d'apprendre les connaissances de base de Firebase et de la fonction de chat. Puisqu'il n'y avait pas d'endroit particulier pour la sortie, je la posterai comme un résumé de l'apprentissage et une introduction de l'application créée. Veuillez lire si vous êtes intéressé.

Article associé

J'ai fait référence à la série de vidéos YouTube suivante. https://www.youtube.com/watch?v=XandgrGiV-8&list=PLJGQf09UDweLB6NGPoYnNL7j_z0Rzkpgr

De plus, je me suis référé à ici pour savoir comment organiser les articles.

Application créée

output.gif

:octocat: GitHub https://github.com/ayukin/ChatApp

C'est un passe-temps personnel, mais j'ai essayé de rendre l'interface utilisateur de l'écran aussi proche que possible de LINE.

Introduction de la fonction

1. 1. s'inscrire

output.gif

2. S'identifier

output.gif

3. 3. Affichage / création de salle de discussion

output.gif

4. Fonction de chat en temps réel

output.gif

--ʻAddSnapshotListener est utilisé pour mettre à jour en temps réel. «J'ai pensé à inverser le tableView` et à l'afficher en bas, mais je ne l'ai pas utilisé car un espace serait créé en haut lorsque la quantité de messages est petite.

5. Connexion Affichage / déconnexion des informations utilisateur

output.gif

6. Structure de données Firestore

スクリーンショット 2020-10-17 19.08.26.png

Éléments techniques

1. 1. architecture

Je n'avais jamais été au courant de l'architecture, j'ai donc décidé d'utiliser MVC cette fois.

MVC

--Modèle: gère la communication de données, le stockage, la logique métier, etc.

2. Bibliothèque

Firebase

IQKeyboardManagerSwift

3. 3. Autre

Ce dont j'étais conscient

1. 1. Division de responsabilité MVC

Tout en approfondissant les connaissances sur la conception dans le livre iOS App Design Pattern, divisez les responsabilités de Model ViewController en FatViewController J'ai essayé de ne pas devenir.

2. Connaissance des noms de variables et des noms de méthodes

Bien que ce soit une chose rudimentaire, lors de la lecture d'un article qui semble être souligné par la critique d'un débutant, il est difficile de comprendre le "nom de la variable" et le type de traitement qu'il représente "le nom de la méthode" Depuis qu'il a été écrit, j'ai essayé de lui donner un nom aussi facile à comprendre que possible.

Tâches futures

J'ai essayé de mettre en œuvre les éléments suivants en plus, mais j'ai abandonné car je ne pouvais pas comprendre à mon niveau actuel. Je suis désolé, mais j'essaierai encore un jour.

--Section des messages par date? Affichage séparé (méthode d'affichage comme LINE) --Message lu / non lu --Affichage des décomptes non lus dans la salle de conversation

Sommaire

Je m'habitue encore aux connaissances et à la compréhension des débutants, mais je m'habitue petit à petit à la grammaire, au Xcode, à l'UIKit, etc. Concernant la façon de concevoir et d'écrire du code en tenant compte de l'architecture, dont j'étais consciente cette fois, j'ai pu saisir le concept, etc. dans des livres et des articles d'ancêtres au bon cœur, mais en réalité, j'avais du mal à répartir les responsabilités. On dit que le concept de MVC diffère selon l'école, mais en tant que débutant, il est préférable pour nous en tant que débutant de procéder à un article facile à comprendre ou à l'avis de la personne qui peut nous enseigner. En faisant progresser l'apprentissage, si vous avez vos propres pensées ou si vous remarquez une erreur de reconnaissance, je pense que vous devriez la corriger à ce moment-là. De plus, l'apprentissage de base de «Firebase» et de la «fonction de chat», qui était le but de cette étude, n'est qu'un «contenu de base», mais je pense qu'il a gagné en force. Comme je l'ai mentionné dans la mission, j'ai décidé de me consacrer à la mise en œuvre de contenu appliqué à l'avenir.

C'est devenu un article comme une impression depuis longtemps, mais merci d'avoir lu jusqu'au bout.

Recommended Posts

J'ai essayé de créer une application de clonage LINE
J'ai essayé de créer une application cartographique simple dans Android Studio
J'ai essayé de créer une compétence Clova en Java
Essayez de créer une application client serveur
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
J'ai essayé de créer un environnement de développement padrino avec Docker
J'ai essayé de créer un environnement de développement Spring MVC sur Mac
J'ai essayé de développer un outil de gestion des effectifs
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de développer un site Web pour enregistrer les dépenses.
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de casser le bloc avec java (1)
[LINE @] J'ai essayé de créer un BOT de conversion de calendrier occidental de calendrier japonais [API de messagerie]
J'ai essayé de créer un portefeuille avec AWS, Docker, CircleCI, Laravel [avec lien de référence]
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai essayé de développer un site Web de partage de boutique de ramen.
J'ai essayé de créer une fonction de connexion avec Java
Je souhaite créer une annotation générique pour un type
J'ai créé une application de chat.
J'ai essayé de vérifier yum-cron
Comment créer une méthode
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
J'ai essayé d'utiliser Wercker pour créer et publier une image Docker qui lance GlassFish 5
J'ai essayé de créer une fonction de message de l'extension Rails Tutorial (Partie 1): Créer un modèle
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]
J'ai essayé de moderniser une application Java EE avec OpenShift.
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
J'ai essayé de créer un React.js x TypeScript x Material-UI sur un environnement docker
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
Je veux créer un fichier Parquet même en Ruby
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
[Rails 6.0, Docker] J'ai essayé de résumer la construction de l'environnement Docker et les commandes nécessaires pour créer un portfolio
J'ai essayé de créer une fonction de message pour l'extension Rails Tutorial (Partie 2): Créer un écran à afficher
J'ai essayé de mâcher C # (indexeur)
Préparation à la création de l'application Rails
J'ai créé une application shopify @java
J'ai essayé un petit docker de digdag.
J'ai essayé de résumer le support d'iOS 14
Créer une nouvelle application avec Rails
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
Créer une application en ligne de commande avec maven
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
C # (polymorphisme: polymorphisme)
J'ai créé une application correspondante (application Android)
J'ai essayé d'expliquer Active Hash
[Android] J'ai créé une application de podomètre.
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
J'ai essayé d'écrire du code comme une déclaration de type en Ruby