FireFast 0.5.13

FireFast 0.5.13

Behrad Kazemi 维护。



 
依赖项
Firebase/Analytics>= 0
Firebase/Auth>= 0
GoogleSignIn>= 0
Firebase/Storage>= 0
Firebase/Functions>= 0
Firebase/Firestore>= 0
Firebase/RemoteConfig>= 0
FBSDKLoginKit>= 0
 

FireFast 0.5.13

  • 作者
  • behrad-kzm

FireFast

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,并首先从 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 文件。