āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻāĻĒāύāĻŋ Firebase Authentication āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āύāĻŋāϰā§āĻāϰāϤāĻž āĻāύāϏā§āĻāϞ āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āϏā§āĻāĻĢāĻ āĻĒā§āϝāĻžāĻā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- Xcode-āĻ, āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĒā§āϰāĻāϞā§āĻĒ āĻā§āϞāĻžāϰ āϏāĻžāĻĨā§, āĻĢāĻžāĻāϞ > āĻĒā§āϝāĻžāĻā§āĻ āϝā§āĻ āĻāϰā§āύ -āĻ āύā§āĻāĻŋāĻā§āĻ āĻāϰā§āύāĨ¤
- āĻ āύā§āϰā§āϧ āĻāϰāĻž āĻšāϞā§, Firebase Apple āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ SDK āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āϝā§āĻ āĻāϰā§āύ:
- Firebase Authentication āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻŦā§āĻā§ āύāĻŋāύāĨ¤
- āĻāĻĒāύāĻžāϰ āϞāĻā§āώā§āϝā§āϰ āĻŦāĻŋāϞā§āĻĄ āϏā§āĻāĻŋāĻāϏā§āϰ āĻ
āύā§āϝāĻžāύā§āϝ āϞāĻŋāĻā§āĻāĻžāϰ āĻĢā§āϞā§āϝāĻžāĻ āĻŦāĻŋāĻāĻžāĻā§
-ObjC
āĻĒāϤāĻžāĻāĻž āϝā§āĻ āĻāϰā§āύāĨ¤ - āĻļā§āώ āĻšāϝāĻŧā§ āĻā§āϞā§, Xcode āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻĒāĻāĻā§āĻŽāĻŋāϤ⧠āĻāĻĒāύāĻžāϰ āύāĻŋāϰā§āĻāϰāϤāĻžāĻā§āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāĻŦāĻ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰāĻŦā§āĨ¤
https://github.com/firebase/firebase-ios-sdk.git
āĻāϰ āĻĒāϰā§, āĻāĻŋāĻā§ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰā§āύ:
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāύāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠Firebase āĻāύāϏā§āϞ āĻĨā§āĻā§ āϤāĻž āĻāϰā§āύ⧎
- āĻāĻŽā§āϞ/āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻžāĻāύ-āĻāύ āϏāĻā§āώāĻŽ āĻāϰā§āύ:
- Firebase āĻāύāϏā§āϞ⧠, Auth āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, āĻāĻŽā§āϞ/āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻā§āώāĻŽ āĻāϰā§āύ āĻāĻŦāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ
āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻš āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāϤā§, āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏāĻžāĻāύ-āĻāύ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒā§ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰā§āύ:
- āĻāĻĒāύāĻžāϰ
UIApplicationDelegate
āĻFirebaseCore
āĻŽāĻĄāĻŋāĻāϞ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰā§āύ, āϏā§āĻāϏāĻžāĻĨā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋ āϝ⧠āĻā§āύ⧠Firebase āĻŽāĻĄāĻŋāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, Cloud Firestore āĻāĻŦāĻ Authentication āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§:āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
āϏā§āĻāĻĢāĻ
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāϰ
application(_:didFinishLaunchingWithOptions:)
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻāĻāĻāĻŋFirebaseApp
āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āĻāĻĻāĻžāĻšāϰāĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰā§āύ:āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
// Use Firebase library to configure APIs FirebaseApp.configure()
āϏā§āĻāĻĢāĻ
// Use Firebase library to configure APIs FirebaseApp.configure()
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
// Use Firebase library to configure APIs [FIRApp configure];
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ SwiftUI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ
UIApplicationDelegateAdaptor
āĻŦāĻžNSApplicationDelegateAdaptor
āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻžāϰApp
āϏā§āĻā§āϰāĻžāĻāĻā§ āĻāĻāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻ ā§āϝāĻžāĻĒ āĻĄā§āϞāĻŋāĻā§āĻ āϏā§āĻāĻāϞāĻŋāĻ āĻ āĻā§āώāĻŽ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, SwiftUI āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻĻā§āĻā§āύāĨ¤āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- āϝāĻāύ āĻāĻāĻāύ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏāĻžāĻāύ-āĻāĻĒ āĻĢāϰā§āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻžāĻāύ āĻāĻĒ āĻāϰā§āύ, āϤāĻāύ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϝā§āĻā§āύ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āϧāĻžāĻĒāĻā§āϞāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰā§āύ, āϝā§āĻŽāύ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻāĻĒ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻāĻāĻŋāϞāϤāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāĻŖ āĻāϰ⧠āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻžāĨ¤
-
createUser
āĻ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒāĻžāϏ āĻāϰ⧠āĻāĻāĻāĻŋ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύāĨ¤āϝāĻĻāĻŋ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύ, āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻĢāϞāĻžāĻĢāϞ āĻŦāϏā§āϤ⧠āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻĄā§āĻāĻž āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻāϞāĻŦā§āϝāĻžāĻ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤āϏā§āĻāĻĢāĻ
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
āĻāĻāĻāĻŋ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ
āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋāϰ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞāĻŋāϰ āĻ āύā§āϰā§āĻĒ⧎ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏāĻžāĻāύ-āĻāύ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒā§, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋ āĻāϰā§āύ:
- āĻāĻĒāύāĻžāϰ
UIApplicationDelegate
āĻFirebaseCore
āĻŽāĻĄāĻŋāĻāϞ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰā§āύ, āϏā§āĻāϏāĻžāĻĨā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋ āϝ⧠āĻā§āύ⧠Firebase āĻŽāĻĄāĻŋāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, Cloud Firestore āĻāĻŦāĻ Authentication āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§:āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
āϏā§āĻāĻĢāĻ
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāϰ
application(_:didFinishLaunchingWithOptions:)
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻāĻāĻāĻŋFirebaseApp
āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āĻāĻĻāĻžāĻšāϰāĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰā§āύ:āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
// Use Firebase library to configure APIs FirebaseApp.configure()
āϏā§āĻāĻĢāĻ
// Use Firebase library to configure APIs FirebaseApp.configure()
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
// Use Firebase library to configure APIs [FIRApp configure];
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ SwiftUI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄā§āϞāĻŋāĻā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ
UIApplicationDelegateAdaptor
āĻŦāĻžNSApplicationDelegateAdaptor
āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻžāϰApp
āϏā§āĻā§āϰāĻžāĻāĻā§ āĻāĻāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻ ā§āϝāĻžāĻĒ āĻĄā§āϞāĻŋāĻā§āĻ āϏā§āĻāĻāϞāĻŋāĻ āĻ āĻā§āώāĻŽ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, SwiftUI āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻĻā§āĻā§āύāĨ¤āϏā§āĻāĻĢāĻāĻāĻāĻāĻ
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- āϝāĻāύ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ, āϤāĻāύ
signIn
āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāύāĨ¤āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϞā§, āĻāĻĒāύāĻŋ āĻĢāϞāĻžāĻĢāϞ āĻŦāϏā§āϤ⧠āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻĄā§āĻāĻž āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻāϞāĻŦā§āϝāĻžāĻ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤āϏā§āĻāĻĢāĻ
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ: āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āύā§āϤāĻŋ āϏā§āĻ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻāĻŋāϞāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻāύā§āύāϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āύā§āϤāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤā§, Firebase āĻāύāϏā§āϞā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āύā§āϤāĻŋ āĻā§āϝāĻžāĻŦāĻāĻŋ āĻā§āϞā§āύ:
āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏā§āĻāĻŋāĻāϏ
Firebase Authentication āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āύā§āϤāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āϏāĻŽāϰā§āĻĨāύ āĻāϰā§:
āĻā§āĻ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ
āĻŦāĻĄāĻŧ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ
āϏāĻāĻā§āϝāĻžāϏā§āĻāĻ āĻ āĻā§āώāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ
āύāύ-āĻāϞāĻĢāĻžāύāĻŋāĻāĻŽā§āϰāĻŋāĻ āĻ āĻā§āώāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻ āĻā§āώāϰāĻā§āϞāĻŋ āĻ -āĻāϞāĻĢāĻžāύāĻŋāĻāĻŽā§āϰāĻŋāĻ āĻ āĻā§āώāϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāĻŖ āĻāϰā§:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
āύā§āϝā§āύāϤāĻŽ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻā§āϰā§āĻā§āϝ (6 āĻĨā§āĻā§ 30 āĻ āĻā§āώāϰ āĻĒāϰā§āϝāύā§āϤ; āĻĄāĻŋāĻĢāϞā§āĻ 6 āĻĒāϰā§āϝāύā§āϤ)
āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āϏāϰā§āĻŦā§āĻā§āĻ āĻĻā§āϰā§āĻā§āϝ (āϏāϰā§āĻŦāĻžāϧāĻŋāĻ āĻĻā§āϰā§āĻā§āϝ 4096 āĻ āĻā§āώāϰ)
āĻāĻĒāύāĻŋ āĻĻā§āĻāĻŋ āĻŽā§āĻĄā§ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āύā§āϤāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āϏāĻā§āώāĻŽ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
āĻĒā§āϰāϝāĻŧā§āĻāύ : āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āĻŽā§āύ⧠āĻāϞāĻž āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻĒāĻĄā§āĻ āύāĻž āĻāϰāĻž āĻĒāϰā§āϝāύā§āϤ āϏāĻžāĻāύ āĻāĻĒ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āώā§āĻāĻž āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧāĨ¤
āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ : āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāĻŋ āĻ -āϏāĻā§āĻāϤ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāĻĒ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ āĻŽā§āĻĄāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒāĻā§āώā§āϰ āύā§āϤāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻā§āĻāϤāĻŋāĻĒā§āϰā§āĻŖ āĻāĻŋāύāĻž āϤāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻāĻŋāϤ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϤāĻžāĻĻā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻ āύā§āϰā§āϧ āĻāϰāĻž āĻāĻāĻŋāϤ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻŽā§āύ⧠āύāĻž āĻāϞā§āĨ¤
āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϏāϰā§āĻŦāĻĻāĻž āĻāĻāĻāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāϝāĻŧāύ āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻž āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āĻŽā§āύ⧠āĻāϞā§āĨ¤
āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĨāĻžāĻā§, āĻāĻŽāϰāĻž āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻŋ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻā§āϰ āĻāϰ⧠āĻāĻĒāĻā§āϰā§āĻĄ āϏāĻā§āώāĻŽ āύāĻž āĻāϰāĻž āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻĒāύāĻŋ āĻāĻŽāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻŦā§āϞāĻ āĻāϰāϤ⧠āĻāĻžāύ āϝāĻžāĻĻā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄāĻā§āϞāĻŋ āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āĻŽā§āύ⧠āĻāϞ⧠āύāĻžā§ˇ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻŽā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻ āĻāĻžāĻŦā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻžāĻĻā§āϰ āĻ āĻŦāĻšāĻŋāϤ āĻāϰā§āĨ¤
āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ: āĻāĻŽā§āϞ āĻāĻŖāύāĻž āϏā§āϰāĻā§āώāĻž āϏāĻā§āώāĻŽ āĻāϰā§āύ
āĻāĻŋāĻā§ Firebase Authentication āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻž āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻžāĻā§āϞāĻŋāĻā§ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻā§āϰāĻšāĻŖ āĻāϰ⧠āϏā§āĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻĢā§āϞ⧠āϝāĻĻāĻŋ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻžāĻāĻŋ āύāĻŋāĻŦāύā§āϧāĻŋāϤ āύāĻž āĻĨāĻžāĻāĻž āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻĨāĻžāĻā§ (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻāĻāĻŋ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ), āĻŦāĻž āϝāĻāύ āĻāĻāĻŋ āĻ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ āϤāĻāύ āύāĻŋāĻŦāύā§āϧāĻŋāϤ āĻšāϝāĻŧ (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ)āĨ¤ āϝāĻĻāĻŋāĻ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒā§āϰāϤāĻŋāĻāĻžāϰā§āϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āϏāĻšāĻžāϝāĻŧāĻ āĻšāϤ⧠āĻĒāĻžāϰā§, āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻŦāύā§āϧāĻŋāϤ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻžāĻā§āϞāĻŋ āĻāĻŦāĻŋāώā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĻā§āώāĻŋāϤ āĻ āĻāĻŋāύā§āϤāĻžāĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ āĻā§āĻāĻāĻŋ āĻāĻŽāĻžāϤā§, āĻāĻŽāϰāĻž āĻāĻĒāύāĻžāĻā§ Google Cloud gcloud
āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻāĻŽā§āϞ āĻāĻŖāύāĻž āϏā§āϰāĻā§āώāĻž āϏāĻā§āώāĻŽ āĻāϰāĻžāϰ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻāĻŋāĨ¤ āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āĻāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻāĻŋ āϏāĻā§āώāĻŽ āĻāϰāϞ⧠Firebase Authentication āϤā§āϰā§āĻāĻŋ āϰāĻŋāĻĒā§āϰā§āĻāĻŋāĻ āĻāĻāϰāĻŖ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧ: āύāĻŋāĻļā§āĻāĻŋāϤ āĻšāύ āϝ⧠āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒāĻāĻŋ āĻāϰāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϤā§āϰā§āĻāĻŋāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āύāĻžāĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻŋ
User
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, signOut:
āϏā§āĻāĻĢāĻ
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϤā§āϰā§āĻāĻŋāϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻĒāϰāĻŋāϏāϰā§āϰ āĻāύā§āϝ āϤā§āϰā§āĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ āĻā§āĻĄ āϝā§āĻ āĻāϰāϤ⧠āĻāĻžāĻāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āϤā§āϰā§āĻāĻŋ āĻĻā§āĻā§āύ.