App Store Connect Swift SDK

用于与 Apple 的 App Store Connect API 交互的 Swift SDK。

Bitrise Status Swift Version Platform Compatibility Dependency frameworks Twitter

API 快速入门信息

此 SDK 包含

请求 API 访问权限

要请求访问权限,请转到 App Store Connect 中“用户和访问”下的新 API 密钥部分。 请注意,您必须是注册为组织的开发团队的团队代理(法律角色)。 个人注册的开发人员的访问权限即将推出。

如何使用 SDK?

并非所有端点都可用,我们正在努力实现所有端点(请参阅 端点)。

1. 导入框架

import AppStoreConnect_Swift_SDK

2. 创建您的 API 配置

转到 https://appstoreconnect.apple.com/access/api 并创建您自己的密钥。 此页面也是查找您的私钥 ID 和颁发者 ID 的页面。

下载私钥后,您可以在文本编辑器中打开包含私钥的 .p8 文件,该文件将显示如下内容

-----BEGIN PRIVATE KEY-----
FDFDGgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwQgPaXyFvZfNydDEjxgjUCUxyGjXcQxiulEdGxoVbasV3GgCgYIKomokDj0DAQehRANCAAASffd/DU3TUWAoLmqE6hZL9A7i0DWpXtmIDCDiITRznC6K4/WjdIcuMcixy+m6O0IrffxJOablIX2VM8sHRpoiuy
-----END PRIVATE KEY-----

复制内容并删除空白行、-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----

将此私钥与颁发者 ID 和私钥 ID 一起使用以创建您的配置文件

let configuration = APIConfiguration(issuerID: "<YOUR ISSUER ID>", privateKeyID: "<YOUR PRIVATE KEY ID>", privateKey: "<YOUR PRIVATE KEY>")

3. 创建一个 APIProvider 并执行请求

使用您的 APIConfiguration 创建一个 APIProvider 实例后,您可以开始执行您的第一个请求。

let request = APIEndpoint
    .v1
    .apps
    .get(parameters: .init(
        sort: [.bundleID],
        fieldsApps: [.appInfos, .name, .bundleID],
        limit: 5
    ))
let apps = try await self.provider.request(request).data
print("Did fetch \(apps.count) apps")

处理分页响应

如果 API 请求的响应可以分多页传递,您可以使用 AsyncSequence 迭代所有页面,或者单独请求紧随当前页面的下一页。

let request = APIEndpoint
    .v1
    .apps
    .get(parameters: .init(
        sort: [.bundleID],
        fieldsApps: [.appInfos, .name, .bundleID],
        limit: 2
    ))

// Demonstration of AsyncSequence result of APIProvider.paged(_)
var allApps: [App] = []
for try await pagedResult in provider.paged(request) {
    allApps.append(contentsOf: pagedResult.data)
}
print("There are \(allApps.count) apps in total")

// Demonstration of APIProvider.request(_:isPagedResponse:) and APIProvider.request(_: pageAfter:)
let firstPageResult = try await provider.request(request)
let firstPageApps = firstPageResult.data
print("The first page of results has \(firstPageApps.count) apps")

if provider.request(request, isPagedResponse: firstPageResult) {
    if let nextPage = try await provider.request(request, pageAfter: firstPageResult) {
        let secondPageApps = nextPage.data
        print("The second page of results has \(secondPageApps.count) apps")
    }
}

处理错误

每当请求返回错误时,您可以通过如下捕获错误来获取详细信息

do {
    print(try await self.provider.request(requestWithError).data)
} catch APIProvider.Error.requestFailure(let statusCode, let errorResponse, _) {
    print("Request failed with statuscode: \(statusCode) and the following errors:")
    errorResponse?.errors?.forEach({ error in
        print("Error code: \(error.code)")
        print("Error title: \(error.title)")
        print("Error detail: \(error.detail)")
    })
} catch {
    print("Something went wrong fetching the apps: \(error.localizedDescription)")
}

错误标题和详细信息应有助于您解决故障。 有关错误的更多信息,请参阅:解析错误响应代码,如 Apple 所述。

安装

Swift 包管理器

Swift Package Manager 是一种自动化 Swift 代码分发的工具,已集成到 swift 编译器中。 它仍处于早期开发阶段,但此 SDK 支持在支持的平台上使用它。

设置好 Swift 包后,将 SDK 添加为依赖项就像将其添加到 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/AvdLee/appstoreconnect-swift-sdk.git", .upToNextMajor(from: "2.0.0"))
]

开发

为了帮助开发此存储库,您需要按照以下步骤操作

git submodule update --init --recursive
bundle install
brew install chruby ruby-install
ruby-install ruby
chruby 3.2.2
gem update --system
gem install bundler
bundle exec fastlane test

更新 OpenAPI 生成的代码

安装 jq

brew install jq

运行以下命令

$ make update

这将尝试从 Apple 下载 App Store Connect OpenAPI 规范,并重新运行 CreateAPI 生成器以生成更新的源代码。

或者,您可以单独运行 make downloadmake generate

沟通

使用 SDK 的应用程序

许可

App Store Connect Swift SDK 在 MIT 许可下可用,并使用来自开源项目的源代码。 有关更多信息,请参阅 LICENSE 文件。

作者

这个项目最初由 Antoine van der Lee 创建,但有很多 优秀的贡献者。 我们欢迎任何形式的贡献,以使这个项目变得更好。