学习笔记14-行为驱动开发、Keychain、OAuth 2.0、ReplayKit

24 阅读3分钟

行为驱动开发

行为驱动开发(BDD)是一种软件开发方法,它强调跨职能团队的协作,确保软件满足业务需求。BDD通过将业务目标转换为可执行的示例来工作,这些示例以简单的英语描述,易于非技术人员理解。这些示例由“Given-When-Then”结构组成,用于指导测试和开发工作。BDD促进了更好的沟通,提高了软件质量,并确保了开发工作与业务目标保持一致。 一些流行的 iOS BDD 框架包括:Quick/Nimble,Kiwi,Specta,Cedar,XCTest。(XCTest 虽然不是纯粹的 BDD 框架,但也可以用于 BDD 风格的测试) 以下是使用 Quick/Nimble 框架的一个示例:

// Swift

import Quick
import Nimble

class TableOfContentsSpec: QuickSpec {
  override class func spec() {
    describe("the 'Documentation' directory") {
      it("has everything you need to get started") {
        let sections = Directory("Documentation").sections
        expect(sections).to(contain("Organized Tests with Quick Examples and Example Groups"))
        expect(sections).to(contain("Installing Quick"))
      }

      context("if it doesn't have what you're looking for") {
        it("needs to be updated") {
          let you = You(awesome: true)
          expect{you.submittedAnIssue}.toEventually(beTruthy())
        }
      }
    }
  }
}

Keychain

iOS 的 Keychain 是一个安全存储系统,用于保护敏感数据,如密码、证书和私钥。它为应用程序提供了一种安全地存储和访问这些数据的方法,这些数据在设备锁定或重启后仍然可用。Keychain 中的数据是加密存储的,并且受到 Touch ID 或 Face ID 的保护。每个应用程序都有自己的 Keychain 存储空间,其他应用程序无法访问。 以下是一些常用的 Keychain Services API:

  • SecItemAdd:向 Keychain 添加一个新的项
  • SecItemCopyMatching:从 Keychain 检索一个或多个项
  • SecItemUpdate:更新 Keychain 中的一个现有项
  • SecItemDelete:从 Keychain 中删除一个项

OAuth 2.0

OAuth 2.0 是一个开放的标准,它允许用户提供一个令牌而不是用户名和密码来访问他们存储在特定服务提供者的数据。 OAuth 2.0 的核心流程涉及以下几个步骤:

  • 请求授权:客户端向资源所有者请求授权
  • 用户授权:资源所有者在授权服务器上登录,并批准或拒绝客户端的授权请求。如果用户批准,授权服务器将向客户端发放一个授权许可
  • 获取访问令牌:客户端使用授权许可向授权服务器请求访问令牌
  • 发放访问令牌:授权服务器验证客户端的身份和授权许可的有效性,如果一切正常,它将向客户端发放一个访问令牌
  • 使用访问令牌:客户端使用获取到的访问令牌向资源服务器请求受保护的资源
  • 更新访问令牌:当访问令牌过期时,客户端可能需要使用刷新令牌来获取新的访问令牌

oauth-abstract.png

ReplayKit

ReplayKit 是苹果在 iOS 9 中引入的一项框架,它允许用户记录屏幕活动、麦克风输入和设备饮品,以及进行游戏重播。 在 iOS 11 中,ReplayKit 增加了对直播功能的支持,使用户能够将屏幕录制和麦克风输入实时流式传输到第三方直播平台。 ReplayKit 的主要功能包括:

  • 屏幕录制:记录设备屏幕上的活动,包括应用程序和游戏
  • 音频录制:可以选择同时录制麦克风输入和设备音频
  • 直播分享:将录制的视频或实时流直接分享到社交网络或直播平台

参考文档