Appwrite Apple SDK

Swift Package Manager License Version Build Status Twitter Account Discord

此 SDK 兼容 Appwrite 服务器版本 1.6.x。 对于旧版本,请查看以前的版本

Appwrite 是一个开源后端即服务服务器,它抽象和简化了复杂且重复的开发任务,并将其置于一个非常易于使用的 REST API 之后。 Appwrite 旨在帮助您以更快、更安全的方式开发您的应用程序。 使用 Apple SDK 将您的应用程序与 Appwrite 服务器集成,以轻松开始与所有 Appwrite 后端 API 和工具进行交互。 有关完整的 API 文档和教程,请访问 https://appwrite.io/docs

Appwrite

安装

使用 Swift Package Manager 的 Xcode

Appwrite Swift SDK 可通过 Swift Package Manager 获得。 为了从 Xcode 使用 Appwrite Swift SDK,请选择 File > Add Packages

在出现的对话框中,在搜索字段中输入 Appwrite Swift SDK 包 URL。 找到后,选择 sdk-for-apple

在右侧,选择您的版本规则,并确保在Add to Project字段中选择了您所需的目标。

现在点击 add package,你就完成了!

Swift Package Manager

将包添加到您的 Package.swift 依赖项

    dependencies: [
        .package(url: "git@github.com:appwrite/sdk-for-apple.git", from: "8.0.0"),
    ],

然后将其添加到您的目标

    targets: [
        .target(
            name: "YourAppTarget",
            dependencies: [
                .product(name: "", package: "sdk-for-apple")
            ]
        ),

入门

添加您的 Apple 平台

要初始化您的 SDK 并开始与 Appwrite 服务交互,您需要向您的项目添加一个新的 Apple 平台。 要添加新平台,请转到您的 Appwrite 控制台,选择您的项目(如果尚未创建,请创建一个),然后点击项目仪表板上的“Add Platform”按钮。

从选项中,选择添加新的 iOSmacOSwatchOStvOS 平台,并添加您的应用程序凭据。

添加您的应用程序名称和 bundle identifier。 您的 bundle identifier 可以在您的 Xcode 项目文件或 Info.plist 文件中找到。 通过注册新平台,您允许您的应用程序与 Appwrite API 通信。

注册 URL schemes

为了捕获 Appwrite OAuth 回调 url,需要将以下 URL scheme 添加到项目。 您可以通过选择您的项目文件,然后选择您希望使用 OAuth 的目标,从 Xcode 添加此 URL scheme。 从 Info 选项卡,展开 URL types 部分,并为 Identifier 添加您的 Appwrite 实例域名,并为 URL scheme 添加 appwrite-callback-[PROJECT-ID]。 务必将 [PROJECT_ID] 字符串替换为您的实际 Appwrite 项目 ID。 您可以在控制台的项目设置屏幕中找到您的 Appwrite 项目 ID。 或者,您可以将以下代码块直接添加到您的目标的 Info.plist 文件

<key>CFBundleURLTypes</key>
<array>
<dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>io.appwrite</string>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>appwrite-callback-[PROJECT-ID]</string>
    </array>
</dict>
</array>

接下来,我们需要添加一个钩子,以便在我们的应用程序被其回调 URL 打开时保存 cookies。

注册 OAuth 处理程序视图

如果您正在使用 UIKit,则可以跳过此部分。

在 SwiftUI 中,这就像确保在您要从中调用 OAuth 请求的 View 上调用 .registerOAuthHandler() 一样简单。

更新 UIKit 的 SceneDelegate

如果您正在使用 SwiftUI,则可以跳过此部分。

对于 UIKit,您需要将以下函数添加到您的 SceneDelegate.swift。 如果您已经定义了此函数,则只需添加以下内容即可。

    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        guard let url = URLContexts.first?.url,
            url.absoluteString.contains("appwrite-callback") else {
            return
        }
        WebAuthComponent.handleIncomingCookie(from: url)
    }

初始化您的 SDK

使用您的 Appwrite 服务器 API 端点和项目 ID 初始化您的 SDK,这些信息可以在您的项目设置页面中找到。

import Appwrite

func main() {
    let client = Client()
        .setEndpoint("http://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
        .setProject("5df5acd0d48c2") // Your project ID
        .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
}

发出您的第一个请求

初始化您的 SDK 对象后,创建任何 Appwrite 服务对象并选择要发送的任何请求。 您可以在 SDK 文档或 API 参考部分找到您要使用的任何服务方法的完整文档。

let account = Account(client)

do {
    let user = try await account.create(
        userId: ID.unique(),
        email: "email@example.com",
        password: "password",
        name: "Walter O'Brien"
    )
    print(String(describing: user.toMap()))
} catch {
    print(error.localizedDescription)
}

完整示例

import Appwrite

func main() {
    let client = Client()
        .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
        .setProject("5df5acd0d48c2") // Your project ID
        .setSelfSigned() // Use only on dev mode with a self-signed SSL cert

    let account = Account(client)
    
    do {
        let user = try await account.create(
            userId: ID.unique(),
            email: "email@example.com",
            password: "password",
            name: "Walter O'Brien"
        )
        print(String(describing: account.toMap()))
    } catch {
        print(error.localizedDescription)
    }
}

错误处理

发生错误时,Appwrite Apple SDK 会抛出一个 AppwriteError 对象,其中包含 messagecode 属性。 您可以在 catch 块中处理任何错误,并将 messagelocalizedDescription 呈现给用户,或者根据提供的错误信息自行处理。 以下是一个示例。

import Appwrite

func main() {
    let account = Account(client)
    
    do {
        let user = try await account.get()
        print(String(describing: user.toMap()))
    } catch {
        print(error.localizedDescription)
    }
}

了解更多

您可以使用以下资源来了解更多信息并获得帮助

贡献

此库由 Appwrite 自定义 SDK 生成器自动生成。 要了解有关如何帮助我们改进此 SDK 的更多信息,请在发送 pull-request 之前查看贡献指南

许可证

有关更多信息,请参阅 BSD-3-Clause 许可证文件。