iOS
...
Users
Connexion utilisateur iOS avec ParseSwift SDK - Tutoriel
11 min
connexion et déconnexion de l'utilisateur introduction dans le guide d'inscription des utilisateurs https //www back4app com/docs/ios/parse swift sdk/users/user registration nous avons appris comment intégrer une option d'inscription dans une application ios en utilisant la plateforme back4app et le parseswift sdk parseswift sdk une fois qu'un utilisateur s'est inscrit avec succès dans votre application, les actions de connexion et de déconnexion sont des fonctionnalités clés dans le flux de l'application le parseswift sdk parseswift sdk nous permettra d'intégrer ces fonctionnalités de manière transparente dans n'importe quelle application ios prérequis pour compléter ce guide rapide, vous avez besoin de xcode une application créée sur back4app suivez le tutoriel sur la création d'une nouvelle application parse pour apprendre à créer une application parse sur back4app remarque suivez le tutoriel d'installation du sdk parse (swift) pour créer un projet xcode connecté à back4app objectif implémenter une fonctionnalité de connexion et de déconnexion des utilisateurs en utilisant le parseswift sdk et la plateforme back4app 1 configuration des fonctionnalités de connexion et de déconnexion avant de commencer à implémenter toute fonctionnalité de connexion, nous devons créer l'objet qui représentera l'utilisateur pour simplifier, nous allons réutiliser la même utilisateur utilisateur structure (qui conforme au parseuser parseuser protocole) que nous avons introduite dans le guide d'enregistrement des utilisateurs https //www back4app com/docs/ios/parse swift sdk/users/user registration import foundation import parseswift struct user parseuser { var username string? var email string? var emailverified bool? var password string? var age int? } nous recommandons de suivre le guide d'enregistrement des utilisateurs et d'enregistrer au moins un utilisateur pour l'utiliser comme exemple pour ce guide tout comme le processus d'inscription, la connexion nécessite un formulaire où l'utilisateur saisit son nom d'utilisateur et mot de passe ensuite, nous effectuons une demande de connexion en utilisant les méthodes correspondantes fournies par le parseswift sdk parseswift sdk à son tour, back4app traite la demande et renvoie une réponse contenant les informations de connexion lorsqu'une erreur se produit, la réponse renvoie des informations pour identifier et gérer cette erreur le processus de déconnexion est simple le parseswift sdk parseswift sdk nous permet de l'implémenter en une seule ligne de code 2 configuration de l'application une fois que vous connecté https //www back4app com/docs/ios/parse swift sdk/install sdk votre projet xcode à votre back4app application, l'étape suivante consiste à configurer l'interface utilisateur de l'application pour le processus de connexion, nous allons implémenter un contrôleur simple contenant les champs de saisie correspondants et un bouton de connexion la classe responsable de ce formulaire s'appelle logincontroller et c'est une sous classe de uiviewcontroller les composants clés à intégrer dans ce contrôleur sont deux uitextfield et un uibutton l'extrait suivant montre l'implémentation de la classe logincontroller 1 import uikit 2 import parseswift 3 4 class logincontroller uiviewcontroller { 5 private let usernametextfield uitextfield = { 6 let textfield = uitextfield() 7 textfield borderstyle = roundedrect 8 textfield placeholder = "username " 9 textfield autocapitalizationtype = none 10 textfield textalignment = center 11 return textfield 12 }() 13 14 private let passwordtextfield uitextfield = { 15 let textfield = uitextfield() 16 textfield borderstyle = roundedrect 17 textfield issecuretextentry = true 18 textfield placeholder = "password " 19 textfield textalignment = center 20 return textfield 21 }() 22 23 private let loginbutton uibutton = { 24 let button = uibutton(type roundedrect) 25 button settitle("log in", for normal) 26 return button 27 }() 28 29 override func viewdidload() { 30 super viewdidload() 31 32 navigationitem title = "back4app log in" 33 34 // lays out the login form 35 let stackview = uistackview(arrangedsubviews \[usernametextfield, passwordtextfield, loginbutton]) 36 stackview\ translatesautoresizingmaskintoconstraints = false 37 stackview\ spacing = 8 38 stackview\ axis = vertical 39 stackview\ distribution = fillequally 40 41 let stackviewheight = cgfloat(stackview\ arrangedsubviews count) (44 + stackview\ spacing) stackview\ spacing 42 43 view\ addsubview(stackview) 44 stackview\ centerxanchor constraint(equalto view\ safearealayoutguide centerxanchor) isactive = true 45 stackview\ centeryanchor constraint(equalto view\ safearealayoutguide centeryanchor) isactive = true 46 stackview\ widthanchor constraint(equalto view\ safearealayoutguide widthanchor, multiplier 0 7) isactive = true 47 stackview\ heightanchor constraint(equaltoconstant stackviewheight) isactive = true 48 49 // adds the method that will be called when the user taps the login button 50 loginbutton addtarget(self, action #selector(handlelogin), for touchupinside) 51 52 // if the user is already logged in, we redirect them to the homecontroller 53 guard let user = user current else { return } 54 let homecontroller = homecontroller() 55 homecontroller user = user 56 57 navigationcontroller? pushviewcontroller(homecontroller, animated true) 58 } 59 60 /// called when the user taps on the loginbutton button 61 @objc private func handlelogin() { 62 guard let username = usernametextfield text, !username isempty, 63 let password = passwordtextfield text, !password isempty else { 64 // shows an alert with the appropriate title and message 65 return showmessage(title "error", message "invalid credentials ") 66 } 67 68 login(with username, password password) 69 } 70 71 /// logs in the user and presents the app's home screen (homecontroller) 72 /// parameters 73 /// username user's username 74 /// password user's password 75 private func login(with username string, password string) { 76 // todo here we will implement the login process 77 } 78 } de plus, la fonction d'aide showmessage(title\ message ) showmessage(title\ message ) est implémentée dans une extension de uiviewcontroller uiviewcontroller 1 extension uiviewcontroller { 2 3 /// presents an alert with a title, a message and a back button 4 /// parameters 5 /// title title for the alert 6 /// message shor message for the alert 7 func showmessage(title string, message string) { 8 let alertcontroller = uialertcontroller(title title, message message, preferredstyle alert) 9 10 alertcontroller addaction(uialertaction(title "back", style cancel)) 11 12 present(alertcontroller, animated true) 13 } 14 } pour le processus de déconnexion, nous insérons un bouton dans le contrôleur d'accueil, c'est à dire, homecontroller homecontroller ce contrôleur de vue ne contiendra que le bouton de déconnexion et une étiquette affichant le nom d'utilisateur de l'utilisateur l'implémentation de ce contrôleur de vue est simple 1 import uikit 2 import parseswift 3 4 class homecontroller uiviewcontroller { 5 6 /// when set, it updates the usernamelabel's text with the user's username 7 var user user? { 8 didset { 9 usernamelabel text = "hello \\(user? username ?? "n/a")!" 10 } 11 } 12 13 private let usernamelabel uilabel = { 14 let label = uilabel() 15 label textalignment = center 16 label font = boldsystemfont(ofsize 18) 17 label translatesautoresizingmaskintoconstraints = false 18 return label 19 }() 20 21 private let logoutbutton uibutton = { 22 let button = uibutton(type roundedrect) 23 button settitle("log out", for normal) 24 button translatesautoresizingmaskintoconstraints = false 25 return button 26 }() 27 28 override func viewdidload() { 29 super viewdidload() 30 31 // sets up the layout (usernamelabel and logoutbutton) 32 view\ backgroundcolor = systembackground 33 navigationitem hidesbackbutton = true 34 navigationitem title = "back4app" 35 view\ addsubview(usernamelabel) 36 view\ addsubview(logoutbutton) 37 38 usernamelabel topanchor constraint(equalto view\ safearealayoutguide topanchor, constant 8) isactive = true 39 usernamelabel centerxanchor constraint(equalto view\ safearealayoutguide centerxanchor) isactive = true 40 41 logoutbutton bottomanchor constraint(equalto view\ safearealayoutguide bottomanchor, constant 8) isactive = true 42 logoutbutton centerxanchor constraint(equalto view\ safearealayoutguide centerxanchor) isactive = true 43 44 // adds the method that will be called when the user taps the logout button 45 logoutbutton addtarget(self, action #selector(handlelogout), for touchupinside) 46 } 47 48 /// called when the user taps the logout button 49 @objc private func handlelogout() { 50 // todo here we will implement the logout process 51 } 52 } 3 demande de connexion nous procédons maintenant à l'implémentation de la login(with\ password) méthode dans la logincontroller classe le parseuser protocole donne à l'objet user la méthode statique login(username\ password) cette méthode prépare et envoie la demande de connexion à votre back4app application selon le cas d'utilisation, on peut utiliser l'une des nombreuses implémentations de la login( ) méthode nous complétons maintenant la login(with\ password) méthode dans logincontroller 1 class homecontroller uiviewcontroller { 2 3 4 /// logs in the user and presents the app's home screen (homecontroller) 5 /// parameters 6 /// username user's username 7 /// password user's password 8 private func login(with username string, password string) { 9 // warning use only one of the following implementations, the synchronous or asynchronous option 10 11 // logs in the user synchronously, it throws a parseerror error if something happened 12 // this should be executed in a background thread! 13 do { 14 let loggedinuser = try user login(username username, password password) 15 16 // after the login success we send the user to the home screen 17 let homecontroller = homecontroller() 18 homecontroller user = loggedinuser 19 20 navigationcontroller? pushviewcontroller(homecontroller, animated true) 21 } catch let error as parseerror { 22 showmessage(title "error", message "failed to log in \\(error message)") 23 } catch { 24 showmessage(title "error", message "failed to log in \\(error localizeddescription)") 25 } 26 27 // logs in the user asynchronously 28 user login(username username, password password) { \[weak self] result in // handle the result (of type result\<user, parseerror>) 29 switch result { 30 case success(let loggedinuser) 31 self? usernametextfield text = nil 32 self? passwordtextfield text = nil 33 34 // after the login success we send the user to the home screen 35 let homecontroller = homecontroller() 36 homecontroller user = loggedinuser 37 38 self? navigationcontroller? pushviewcontroller(homecontroller, animated true) 39 case failure(let error) 40 self? showmessage(title "error", message "failed to log in \\(error message)") 41 } 42 } 43 } 44 } 4 demande de déconnexion la demande de déconnexion est aussi simple que la demande de connexion encore une fois, le parseuser protocole fournit le user avec la méthode statique logout( ) en appelant cette méthode, l'utilisateur actuel (accédé via user current ) se déconnecte de votre back4app application nous appellerons cette méthode lorsque l'utilisateur appuie sur le bouton de déconnexion situé sur l'écran d'accueil, c'est à dire, dans la handlelogout() méthode de la homecontroller classe, nous ajoutons ce qui suit 1 class homecontroller uiviewcontroller { 2 3 4 /// called when the user taps the logout button 5 @objc private func handlelogout() { 6 // warning use only one of the following implementations, the synchronous or asynchronous option 7 8 // logs out the user synchronously, it throws a parseerror error if something happened 9 // this should be executed in a background thread! 10 do { 11 try user logout() 12 13 // after the logout succeeded we dismiss the home screen 14 navigationcontroller? popviewcontroller(animated true) 15 } catch let error as parseerror { 16 showmessage(title "error", message "failed to log out \\(error message)") 17 } catch { 18 showmessage(title "error", message "failed to log out \\(error localizeddescription)") 19 } 20 21 // logs out the user asynchronously 22 user logout { \[weak self] result in // handle the result (of type result\<void, parseerror>) 23 switch result { 24 case success 25 // after the logout succeeded we dismiss the home screen 26 self? navigationcontroller? popviewcontroller(animated true) 27 case failure(let error) 28 self? showmessage(title "error", message "failed to log out \\(error message)") 29 } 30 } 31 } 32 } 5 exécutez l'application ! dans ce dépôt https //github com/templates back4app/ios user log in and log out , vous trouverez un projet xcode contenant les processus de connexion et de déconnexion que nous avons décrits ci dessus avant d'exécuter l'application, assurez vous d'avoir connecté le projet xcode à votre back4app back4app application conclusion le back4app et le parseswift sdk parseswift sdk nous permettent d'intégrer des fonctionnalités de connexion et de déconnexion dans les applications ios de manière rapide après avoir connecté votre back4app application à votre projet xcode, le processus de connexion (ou de déconnexion) nécessite simplement d'appeler une seule méthode