FireFast
示例
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
身份验证
在 FireFast.UseCaseProvider.makeAuthUseCases()
中有几个函数,您可以用来使用 Firebase 验证用户
public protocol AuthUseCasesProtocol {
func getPasswordSignInMethods() -> PasswordAuthProtocol
func getPhoneNumberSignInMethods() -> PhoneAuthProtocol
func getSignInMethod(forType: SignInMethodType) -> CommonAuthProtocol
func getUser() -> AuthorizationResponseModel?
func signOut() throws
}
在 AppDelegate 中设置代理,以便所有操作都由 FireFast 处理
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FireFast.UseCaseProvider.application(application: application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return FireFast.UseCaseProvider.application(application: app, open: url, options: options)
}
}
此仓库中有一个完整的示例,因此您可以下载项目进行检查,但如果您很忙或像我一样懒惰,请查看以下内容
let authenticator = FireFast.UseCaseProvider.makeAuthUseCases()
//Sign-in with email and
authenticator.getPasswordSignInMethods().signInWith(email: email, password: password) { [unowned self](loginInfo) -> (Void) in
print("success")
} onError: { [unowned self](error) -> (Void) in
print("\(error.localizedDescription)")
}
authenticator.getSignInMethod(forType: .apple).presentSignIn(on: self) { [unowned self](loginInfo) -> (Void) in
print("success \(loginInfo.email), \(loginInfo.name)")
} onError: { [unowned self](error) -> (Void) in
print("\(error.localizedDescription)")
}
登录配置
您不需要为每种登录方法编写代码,但您必须在项目中进行一些配置才能使其正常工作。在继续之前,请从 Firebase 控制台启用每个登录方法,然后按照以下步骤操作
- 为了实现Google登录,您需要从Firebase控制台下载 'GoogleService-Info.plist' 并在项目配置中创建一个url模式 更多信息。
- 为了实现Apple登录,您需要在项目中添加Apple登录的功能 更多信息
- 为了实现Facebook登录,您需要访问Developers.Facebook.com,创建一个应用并填写所需信息 更多信息。
云函数
FireFast支持在FireFast.UseCaseProvider.makeCloudFunctionUseCases()
内部轻松调用云函数,您可以通过发送字典并接收一个通用的codable来实现。无需更多额外代码!
public protocol FunctionUseCasesProtocol {
func call<T: Codable>(name: String, parameters: [String: Any]?, onSuccess: @escaping (T) -> Void, onError: ((Error) -> Void)?)
}
Firestore
在FireFast.UseCaseProvider.makeFirestoreUseCases()
中有一个令人惊叹的通用集合结构,接受一个codable作为参数,并提供了查询firestore或自动分页查询的完整用例
public struct GenericCollection<T: Codable> {
public func paginate() -> AutoPaginator<T>
public func get(documentId id: String, onSuccess: @escaping ((T?) -> Void), onError: ((Error) -> Void)?)
public func getAll( onSuccess: @escaping (([T]) -> Void), onError: ((Error) -> Void)?)
public func find(query: @escaping (CollectionReference) -> Query, onSuccess: @escaping (([T]) -> Void), onError: ((Error) -> Void)?)
public func upsert(dictionary: [String: Any], withId id: String? = nil, completionHandler: ((Error?) -> Void)?)
public func upsert(document: T, withId id: String? = nil, completionHandler: ((Error?) -> Void)?)
public func update(document: T, forDocumentId id: String, completionHandler: ((Error?) -> Void)?)
public func update(fields: [String: Any], forDocumentId id: String, completionHandler: ((Error?) -> Void)?)
public func delete(fieldNames: [String], fromDocumentWithId id: String, completionHandler: ((Error?) -> Void)?)
public func delete(documentId id: String, completionHandler: ((Error?) -> Void)?)
}
云存储
使用FireFast与云存储相结合非常有趣,您可以通过FireFast.UseCaseProvider.makeCloudFunctionUseCases()
访问相关的用例。您可以轻松上传文件、创建文档的URL或删除文件。
public protocol StorageUseCaseProtocol {
func upload(data: Data, path: String, onSuccess: @escaping (UploadInfoModel) -> Void, onError: ((Error) -> Void)?)
func makeURL(path: String, onSuccess: @escaping (URL) -> Void, onError: ((Error) -> Void)?)
func delete(path: String, completion: ((Error?) -> Void)?)
}
远程配置
有一个获取远程配置的数据的函数和一个通用的函数,所有这些都可以通过FireFast.UseCaseProvider.makeRemoteConfigUseCases()
访问。
public protocol RemoteConfigUseCasesProtocol {
func get<T: Codable>(key: String, onSuccess: @escaping (T) -> Void, onError: ((Error) -> Void)?)
func get(key: String, onSuccess: @escaping (Bool) -> Void, onError: ((Error) -> Void)?)
func get(key: String, onSuccess: @escaping (String) -> Void, onError: ((Error) -> Void)?)
func get(key: String, onSuccess: @escaping (NSNumber) -> Void, onError: ((Error) -> Void)?)
func get(key: String, onSuccess: @escaping (Data) -> Void, onError: ((Error) -> Void)?)
}
备注
如果您认为这个repo需要新增用例,请随时提交一个issue或发送一个pull request。
安装
FireFast 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'FireFast'
作者
behrad-kzm, [email protected]
许可
FireFast 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。