• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

Firebase简介

我们正处于 rapid 原型设计的时代。我们可能会得到好主意,但有时如果工作量太大,它们就无法实施。通常,后端是限制因素——由于缺乏服务器端编码的知识或时间,许多想法永远无法实现。

作为移动开发人员,使用后端即服务 (BaaS) 平台可以帮助您快速实施您的想法。

firebase 具有快速原型设计和快速测试您的想法所需的所有关键功能。使用 Firebase,您可以快捷地创建身份验证、数据库和对象存储等功能。Firebase 还附带其他可用于验证原型的功能,例如分析、A/B 测试和推送通知。 

最重要的是,Firebase 对小型项目是免费的!

配置 ios 应用以使用 Firebase

让我们创建一个使用 Firebase 的示例 Xcode 项目。我们将其命名为 MyFirstFirebaseApp

创建一个新的 Xcode 项目

Firebase简介  第1张

为您的项目选择一个 单一视图应用程序模板。

Firebase简介  第2张

现在项目已创建,让我们开始为 Firebase 配置它。

创建一个 Podfile

CocoaPods 是 swift 和 Objective-C Cocoa 项目的依赖管理器。我们需要在我们的项目中初始化它。这可以通过 pod init命令来完成。

$ cd your-project directory
$ pod init

添加 Firebase Pod 

我们想将Firebase/Core pod 添加到我们的项目中。这包括启动和运行 Firebase 所需的必备库。 

$ pod 'Firebase/Core'

现在这是您的Podfile的外观:

Firebase简介  第3张

安装 Pod 并在 Xcode 中打开项目

包含 pod 详细信息后,让我们使用 pod install命令安装它们。然后我们可以通过打开 .xcworkspace文件在 Xcode 中打开项目。

$ pod install
$ open your-project.xcworkspace

创建和配置您的 Firebase 帐户

创建 Firebase 帐户

现在让我们设置一个Firebase 帐户!众所周知,Firebase 是 Google 的产品,因此我们可以使用我们的gmail帐户创建一个 Firebase 控制台帐户。 

但是,请注意:Firebase 并非完全免费。我们可以从免费版本开始进行初始原型设计,但如果您计划使用 Firebase 投入生产,那么您应该了解定价结构。 

在 Firebase 控制台中创建一个新项目

现在我们已经成功登录到我们的 Firebase 帐户,让我们创建一个项目。单击添加项目

创建项目后,Firebase 数据库、用户管理和远程配置可以与 iOS、android和 Web 共享。

Firebase简介  第4张

创建项目后,您将被带到“ 项目概述”屏幕。在 Get started下,点击 iOS开始我们的 iOS 原型。

Firebase简介  第5张

为 iOS 注册应用程序

要注册我们的应用程序,我们需要提供一个项目标识符。

Firebase简介  第6张

现在点击 注册应用程序。系统会要求您下载 需要添加到 Xcode 项目中的.plist文件。

Firebase简介  第7张

GoogleService-Info.plist将包含客户端 ID、API 密钥、数据库 URL 和存储桶等基本信息。下载后看看。然后,您需要通过将其拖到 Xcode 中显示的文件夹中来将其添加到您的项目中。

Firebase简介  第8张

将初始化代码添加到您的应用程序

现在您可以将 Firebase 初始化代码添加到您的应用中!打开 AppDelegate并导入 Firebase。然后加入FirebaseApp.configure()。 didFinishLaunchingWithOptions您的代码将如下所示:

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)
    -> Bool {
    FirebaseApp.configure()
    return true
  }
}

验证 Firebase 是否在您的应用中运行

设置终于完成,您可以测试 Firebase 是否已正确安装在您的应用中。当您在 Firebase 控制台中的将 Firebase添加到您的 iOS 应用 页面 上单击下一步时,您将看到:  

Firebase简介  第9张

让我们通过 Xcode 清理、构建和运行应用程序——应该没有错误。您还可以在控制台中看到一些与 Firebase 相关的日志。如果一切正常,Firebase 控制台会通知您。

欢呼!现在我们已经成功地为我们的应用设置了 Firebase。 

Firebase 用户管理

如前所述,Firebase 可用于用户管理,所以让我们设置我们的应用程序进行身份验证和管理用户。首先,让我们导航到 Firebase Dashboard 中的 Authentication 部分,如下所示。

Firebase简介  第10张

单击设置登录方法。在这里,我们可以看到许多可能性。您可以选择多个,或者如果您不想登录,您可以选择匿名。 

  • 电子邮件/密码:允许用户使用他们的电子邮件地址和密码进行注册。Firebase SDK 还提供电子邮件地址验证、密码恢复和电子邮件地址更改原语。

  • 电话:允许用户使用 Firebase SDK 电话验证和用户身份验证工具使用手机号码登录。在 Firebase 的免费 Spark 计划下,您每月可以获得 10,000 次手机登录,但之后您必须付费。在选择此选项之前,请查看定价部分。 

  • Google:Google 登录会在您连接的 iOS 和网络应用程序上自动配置。要为您的 Android 应用设置 Google 登录,您需要在项目设置中为每个应用添加 SHA1 指纹。

  • 游戏:配置客户端 ID 和客户端密码。

  • Facebook:要使用 Facebook 进行身份验证,您必须将 oauth 重定向 URI 添加到您的 Facebook 应用程序配置中。

  • Twitter:要使用 Twitter 进行身份验证,您需要将回调URL 添加到 Twitter 应用程序配置中。

  • GitHub:要使用 GitHub 设置身份验证,您需要将授权回调 URL 添加到 GitHub 应用程序配置。

  • Anonymous:选择此选项可在您的应用程序中启用匿名访客帐户,这样您就可以强制执行特定于用户的安全和 Firebase 规则,而无需用户提供凭据。

配置电话验证

让我们看看如何使用手机作为登录方法。

首先,导航到Sign-in method,点击Phone,然后启用它。你会看到这样的屏幕:

Firebase简介  第11张

您还需要将Firebase/Authpod 包含在您的Podfile中。

pod 'Firebase/Auth'

在 Podfile 中添加上述行后,导航到项目文件夹并运行 pod install 命令。

接下来,您需要在 Xcode 项目中启用推送通知。

Firebase简介  第12张

要查找此设置,请从Targets 面板中选择您的应用程序,然后单击Capabilities选项卡。从那里,您可以启用 推送通知

reCAPTCHA 验证 

现在让我们配置 reCAPTCHA 验证。reCAPTCHA 用于无法发送或接收静默推送通知的情况,例如当用户禁用您的应用程序的后台刷新时,或在 iOS 模拟器上测试您的应用程序时。在这种情况下,Firebase 身份验证使用 reCAPTCHA 验证来完成手机登录流程。

单击 Xcode 左侧面板中的GoogleService-Info.plist以打开 plist。现在将REVERSED_CLIENT_ID的值复制 到 TextEdit 或另一个记事本中。 

接下来,转到 Targets  > your app >  Info  > URL Types。单击“+”按钮并将REVERSED_CLIENT_ID值复制到URL Schemes中,如下所示。

Firebase简介  第13张

配置 Firebase 云消息传递

现在让我们使用我们应用的 APNs 配置 Firebase Cloud Messaging。

打开 Firebase 控制台,单击Settings按钮后,您将看到Project SettingsUsers and Permissions。单击项目设置,然后 单击云消息传递选项卡。在此屏幕上,您可以找到 iOS 应用程序配置部分。 

Firebase简介  第14张

要启用 Firebase 云消息传递,我们会将 APN 和 APN 身份验证密钥上传到此对话框。

您需要创建 APNs 身份验证密钥和 APNs 证书密钥。

创建 APNs 身份验证密钥的步骤 

  • 在您的开发者帐户中,转到 Certificates, Identifiers & Profiles,然后在 Keys下选择 All。 

  • 单击右上角的添加按钮 ( + )。 

  • 输入 APNs 身份验证密钥的描述。

  • 在 Key services下,选中APNs复选框,然后单击 Continue

  • 单击 确认 ,然后单击 下载。将您的钥匙保存在安全的地方!这是一次性下载,以后无法找回密钥。

创建 APNs 证书密钥的步骤

  • 从您的 Apple 开发者帐户创建一个App ID ,并在创建时启用推送通知。App ID 是唯一标识应用程序的标识符。作为惯例,它由带有您的公司名称和应用程序名称的反向域表示(例如com.mysoft.myfirstfirebaseApp 

  • 为上述 App ID 创建一个Provisioning Profile 。

就是这样!现在,我们完成了所有配置,可以开始实现注册和登录流程。

使用电话验证注册用户

让我们回到 Xcode 并创建 RegistrationViewController.swift、  RegistrationViewController.storyboard和 RegistrationService.swift文件。

对于情节提要,我添加了 UITextField 和 UIButton,如下所示。这些应该在RegistrationViewController.swift中链接。

Firebase简介  第15张

这就是我的 RegistrationViewController.swift的外观: 

import Foundation
import UIKit

class RegistrationViewController: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var phoneNumber: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func requestOTPTapped(_ sender: Any) {
        
    }
}

由于我们主要关注 Firebase,因此我们不会实现 UITextFieldDelegates。相反,为了简单起见,我们将在按钮单击时捕获文本。 

现在让我们在RegistrationService.swift中添加以下代码 。

import FirebaseAuth

class RegistrationService {

    func getVerificationId(phoneNumber: String, completionHandler: @escaping (String?, Error?) -> Void){
        
        PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { (verificationID, error) in
            
            if let error = error {
                completionHandler(nil, error)
            }
            
            if let id = verificationID {
                completionHandler(id, nil)
            }
        }
    }
}

在此代码中,PhoneAuthProvider.provider().verifyPhoneNumber将电话号码作为输入并将verificationID. 这还会向文本字段中提供的电话号码触发一次性密码 (OTP) 消息。用户将在手机上收到 OTP,并将其输入回应用程序的警报对话框中。

注意:输入电话号码时,请确保同时输入***代码。

另请注意,我们必须记住 import FirebaseAuth在文件的顶部。

现在,让我们回到RegistrationViewController.swift并调用getVerificationId,如下所示。在这里,我将 id 打印到控制台以检查是否verificationId已生成。

import Foundation
import UIKit

class RegistrationViewController: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var phoneNumber: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func requestOTPTapped(_ sender: Any) {
        if let phoneNumber = phoneNumber.text{
            
            RegistrationService().getVerificationId(phoneNumber: phoneNumber){ (id, error) in
                if error != nil {
                    return
                }
                
                if let id = id {
                    print(id)
                }
            }
        }
    }
}

登录方法

现在让我们在 RegistrationService 中编写一个登录方法。在这里,我们将使用 verifyId 和 OTP 创建一个 Firebase Credential 对象。这是代码的外观:

      func signIn(verificationId: String, verificationCode: String, completionHandler: @escaping (String?, Error?) -> Void){
        
        let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationId, verificationCode: verificationCode)
        
        Auth.auth().signIn(with: credential) { (user, error) in
            
            if let error = error {
                completionHandler("Error", error)
            }
            completionHandler("Success", nil)
        }
    }

收到 id 后,我们将显示一个警报视图,供用户捕获 OTP 并signIn调用 RegistrationService. 以下是RegistrationViewController这些更改后的外观: 

import Foundation
import UIKit

class RegistrationViewController: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var phoneNumber: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func requestOTPTapped(_ sender: Any) {
        if let phoneNumber = phoneNumber.text{
            
            RegistrationService().getVerificationId(phoneNumber: phoneNumber){ (id, error) in
                if error != nil {
                    return
                }
                
                if let id = id {
                    self.displayAlert(id: id)
                }
            }
        }
    }
    
    func displayAlert(id: String) {
        let alertController = UIAlertController(title: "OTP?", message: "", preferredStyle: .alert)
        
        let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: {
            (action : UIAlertAction!) -> Void in
        })
        
        let saveAction = UIAlertAction(title: "Save", style: .default, handler: {
            alert -> Void in
            
            let otpText = alertController.textFields![0] as UITextField
            if let otp = otpText.text {
                print(otp)
                
                RegistrationService().signIn(verificationId: id, verificationCode: otp){ (status, error) in
                    if error != nil {
                        return
                    }
                    
                    print("SignIn status", status ?? "Unknown")
                }
            }
        })
        
        alertController.addTextField { (textField : UITextField!) -> Void in
            textField.placeholder = "OTP"
        }
        
        alertController.addAction(cancelAction)
        alertController.addAction(saveAction)
        
        self.present(alertController, animated: true, completion: nil)
    }
}

现在您可以运行您的应用程序来试用它——这是您在单击 请求 OTP时将看到的内容。

Firebase简介  第16张

现在登录状态将打印为 Success。我们可以在 Firebase 控制台中检查已创建用户。 

结论

在本教程中,我们使用 Xcode 和 Firebase 构建了一个简单的应用程序。希望您获得了一些新技能,您将能够在接下来的项目中付诸实践。 



文章目录
  • 配置 ios 应用以使用 Firebase
    • 创建一个新的 Xcode 项目
    • 创建一个 Podfile
    • 添加 Firebase Pod
    • 安装 Pod 并在 Xcode 中打开项目
    • 创建和配置您的 Firebase 帐户
      • 创建 Firebase 帐户
      • 在 Firebase 控制台中创建一个新项目
    • 为 iOS 注册应用程序
    • 将初始化代码添加到您的应用程序
      • 验证 Firebase 是否在您的应用中运行
  • Firebase 用户管理
    • 配置电话验证
      • reCAPTCHA 验证
      • 配置 Firebase 云消息传递
      • 创建 APNs 身份验证密钥的步骤
      • 创建 APNs 证书密钥的步骤
  • 使用电话验证注册用户
    • 登录方法
  • 结论