适用于 Swift 的 Amplify 库

AWS Amplify

AWS Amplify 为不同的云操作类别提供声明式且易于使用的接口。我们的默认实现适用于 Amazon Web Services (AWS),但 AWS Amplify 被设计为开放且可插拔,适用于任何自定义后端或服务。

适用于 Swift 的 Amplify 库构建于 适用于 Swift 的 AWS SDK 之上。这允许访问适用于 Swift 的 AWS SDK,以使用广泛的以服务为中心的 API。

API 文档

入门指南

CI/CD Codecov Discord

特性/API

平台支持

平台 版本 支持级别
iOS 13+ GA (正式发布)
macOS 10.15+ GA (正式发布)
tvOS 13+ GA (正式发布)
watchOS 9+ GA (正式发布)
visionOS 1+ 预览版*

Swift 版本支持

当前支持的最低 Swift 语言版本是 Swift 5.9

注意

Amplify Swift 支持的最低 Swift 语言版本与 Apple 允许将应用上传到 App Store Connect 的最低 Xcode 版本中包含的版本相匹配。 历史上,Apple 每年 4 月更新最低允许的 Xcode 版本。您可以期望 Amplify Swift 在随后的 60 天内更新最低支持的 Swift 版本。 这样做是为了确保 Amplify Swift 可以提供现代 Swift API 并利用 Swift 语言的改进。

语义化版本控制

我们的发布遵循 语义化版本控制

语义化版本控制和枚举情况

当 Amplify 添加新的枚举值时,我们将发布该库的新的次要版本。

使用 switch 语句评估枚举的所有成员的应用程序可以添加 default 情况,以防止新情况导致编译警告或错误。

语义化版本控制和依赖项更新

我们遵循语义化版本控制来更新我们的依赖项

许可证

该库在 Apache 2.0 许可证下获得许可。

安装

Amplify 需要 Xcode 15.0 或更高版本才能支持所有受支持的平台。

有关更详细的说明,请参阅我们的文档站点中的入门指南

Swift Package Manager

  1. Swift Package Manager 随 Xcode 一起分发。 要开始将 Amplify 库添加到您的 iOS 项目,请在 Xcode 中打开您的项目,然后选择File > Add Packages

    Add package dependency

  2. 将适用于 Swift 的 Amplify 库 GitHub 存储库 URL (https://github.com/aws-amplify/amplify-swift) 输入搜索栏。

  3. 您将看到适用于 Swift 的 Amplify 库存储库规则,该规则用于确定 Swift Package Manager 要安装的 Amplify 版本。 选择Up to Next Major Version并输入 2.0.0 作为依赖规则的最小版本,然后单击Add Package

    Dependency version options

  4. 选择要添加到项目的库。 始终选择 Amplify 库。 要安装的“插件”取决于您使用的类别

    • API: AWSAPIPlugin
    • 分析 (Analytics): AWSPinpointAnalyticsPlugin
    • 身份验证 (Auth): AWSCognitoAuthPlugin
    • 数据存储 (DataStore): AWSDataStorePlugin
    • 地理位置 (Geo): AWSLocationGeoPlugin
    • 存储 (Storage): AWSS3StoragePlugin

    Select dependencies

    选择所有合适的选项,然后单击Add Package

    您始终可以返回并修改项目中包含的 SPM 包,方法是打开项目的 Package Dependencies 选项卡:单击 Xcode 导航器中的项目文件,然后单击 Project 部分下的项目,然后选择 Package Dependencies 选项卡。

  5. 在您的应用代码中,当您需要向 Amplify 添加插件、访问插件选项或访问类别转义出口时,请显式导入插件。

    import Amplify
    import AWSCognitoAuthPlugin
    import AWSAPIPlugin
    import AWSDataStorePlugin
    
    // ...
    
    func initializeAmplify() {
        do {
            try Amplify.add(plugin: AWSCognitoAuthPlugin())
            try Amplify.add(plugin: AWSAPIPlugin())
            try Amplify.add(plugin: AWSDataStorePlugin())
            // and so on ...
            try Amplify.configure()
        } catch {
            assertionFailure("Error initializing Amplify: \(error)")
        }
    }

    如果您只是访问 Amplify 类别 API(例如,Auth.signIn()Storage.uploadFile()),您只需要导入 Amplify

    import Amplify
    
    // ...
    
    func signIn() async throws {
        let signInResult = try await Amplify.Auth.signIn(...)
        // ...
    }

转义出口

通过 特性/API 部分中未列出的所有服务和特性,都可以通过 Swift SDK 或如果该类别支持,则可以通过如下所示的转义出口访问

import Amplify
import AWSS3StoragePlugin
import AWSS3

// ...

guard let plugin = try Amplify.Storage.getPlugin(for: "awsS3StoragePlugin") as? AWSS3StoragePlugin else {
    print("Unable to to cast to AWSS3StoragePlugin")
    return
}

let awsS3 = plugin.getEscapeHatch()

let accelerateConfigInput = PutBucketAccelerateConfigurationInput()
do {
    let accelerateConfigOutput = try await awsS3.putBucketAccelerateConfiguration(
        input: accelerateConfigInput
    )
    print("putBucketAccelerateConfiguration output: \(accelerateConfigOutput)")
} catch {
    print("putBucketAccelerateConfiguration error: \(error)")
}

描述所需原因 API 的使用

根据 Apple App Store 的要求,我们提供了新的 PrivacyInfo.xcprivacy 文件,用于描述所需原因 API 的使用,请参阅描述所需原因 API 的使用。 您还可以在 Xcode 中归档您的 App 后导出隐私报告,请参阅 创建您的 App 的隐私报告

以下 Amplify 目标已被确定为正在使用 用户默认 API

报告错误/功能请求

Open Bugs Open Questions Feature Requests Closed Issues

我们欢迎您使用 GitHub 问题跟踪器来报告错误或提出功能建议。

提交问题时,请查看 现有打开的或最近关闭的问题,以确保其他人尚未报告该问题。 请尽量包含尽可能多的信息。 像这样的细节非常有用

开源贡献

我们欢迎社区的任何和所有贡献! 在提交任何 PR 之前,请务必阅读我们的贡献指南这里。 谢谢!♥️