Featured image of post 使用 TypeScript 构建的 appstore-connect-sdk

使用 TypeScript 构建的 appstore-connect-sdk

新玩具用 Typescript 写了一个访问 App Store Connect API 的 Node.JS 库,同时让它在 Deno 运行时也跑了起来,并通过 OpenAPI Generator 实现了对所有 API 的支持。

App Store Connect API 概述

App Store Connect API 是苹果公司为开发者提供的一组基于 REST 架构的 API,它们用于管理您的 App Store Connect 账户、应用程序、版本、测试等资源。App Store Connect API 提供了一种编程方式来管理这些资源,从而使自动化操作成为可能。无论是自动化应用程序发布、审查更新、分析收入等,使用 App Store Connect API 都可以大幅提高开发人员的效率,比如:

  • 上传和发布应用程序、应用程序元数据和应用程序截图
  • 获取应用程序评级和评估的详细信息
  • 查看应用程序的销售和财务报告
  • 处理应用程序的财务事务,例如订阅和消费品购买
  • 使用 App Store Connect API 可以实现自动化管理和监控应用程序在 App Store 中的表现,帮助开发者和运营团队提高效率,同时还可以提供更好的用户体验。

例如,如果您需要上传和发布应用程序更新,您可以使用 App Store Connect API 自动化这个过程,减少手动干预的时间和错误,同时也可以提高发布的效率。

另外,使用 App Store Connect API 还可以帮助您分析您的应用程序在应用商店中的表现,例如获取应用程序的评分和评论等信息。这些信息可以帮助您更好地了解用户需求,并及时响应用户反馈,提高应用程序的质量和用户体验。

总之,使用 App Store Connect API 可以帮助开发者和运营团队自动化应用程序管理和监控,提高效率和用户体验。

appstore-connect-sdk 简介

appstore-connect-sdk 是我最近开发的一个 Node.js 模块,使用 TypeScript 编写,它提供了一种方便的方式,供开发人员与 App Store Connect API 进行交互,该模块构建在 OpenAPI Generator 工具之上,基于苹果官方提供的 OpenAPI 规范提供对全部 API 的支持。

import AppStoreConnectAPI from "appstore-connect-sdk";
import {
  AppsApi,
  AppEventLocalizationsApi,
} from "appstore-connect-sdk/dist/openapi/apis";

const appStoreConnect = new AppStoreConnectAPI({
  issuerId: "<YOUR ISSUER ID>",
  privateKeyId: "<YOUR PRIVATE KEY ID>",
  privateKey: "<YOUR PRIVATE KEY>",
});

const res = await client.call(AppsApi).appsGetCollection();
console.log(res);

使用 appstore-connect-sdk 可以方便地进行许多自动化任务,例如提交应用程序更新、审查、查询销售报告等操作,从而大幅提高开发人员的效率。通过使用 TypeScript 编写,该模块提供了良好的类型支持,从而使代码更易于编写和维护。

OpenAPI Generator

appstore-connect-sdk 模块是基于 OpenAPI 规范生成的,因此它提供了对 AppStore Connect 上百个 API 的完整支持。如果之后苹果更新了 API,只需要使用其他的 API,只需要修改对应的 OpenAPI 规范文件并使用 OpenAPI Generator 重新生成相应的代码即可。

openapi-generator-cli generate \
  -i ./app_store_connect_api_2.2_openapi.json \
  -o src/openapi \
  -g typescript-fetch \
  --additional-properties=supportsES6=true \
  --skip-validate-spec

使用 OpenAPI Generator 生成的代码具有良好的可读性和易于维护的特点。开发人员可以使用自己熟悉的 HTTP 客户端库(例如 Axios、node-fetch 或浏览器的内置 fetch API 等)进行请求,从而更加灵活地使用该模块。

对 Deno 运行时的兼容

虽然 appstore-connect-sdk 是一款基于 Node.js 的 SDK,但它在一定程度上也兼容 Deno 运行时环境。不过,由于 Deno 并没有完全支持 Node.js 的 crypto 模块,导致 appstore-connect-sdk 的某些功能在 Deno 环境下可能无法正常工作。

其中,最明显的限制是 appstore-connect-sdk 依赖的 jsonwebtoken不完全支持 Deno。因此暂时无法使用 jsonwebtoken 在 Deno 环境下生成 JWT 令牌,不过,你可以通过与 Deno 完全兼容的库(例如 djwt)手动生成 JWT 令牌,然后将其传递给 appstore-connect-sdk 模块,以实现与 App Store Connect API 的身份验证。

deno_example 中可以找到一个在 Deno 环境下使用 appstore-connect-sdk 模块的示例。

我们致力于确保 appstore-connect-sdk 模块在 Node.js 和 Deno 环境下的完全兼容,并将继续改进其在 Deno 环境下的兼容性,以适应 Deno 运行时的演进。

通过 AWS/Vercel/Deno Deploy 等函数计算快速构建 App Store Connect 自动化任务

appstore-connect-sdk 模块提供了一个方便的方式,让开发者快速地与 App Store Connect API 进行交互。不过,为了进一步提高使用效率,你也可以将 appstore-connect-sdk 模块与 AWS Lambda、Vercel 或 Deno Deploy 等函数计算服务一起使用。

以 AWS Lambda 为例,你可以通过将 appstore-connect-sdk 作为依赖包添加到 AWS Lambda 函数的 Node.js 运行时环境中,快速搭建一个用于自动化 App Store Connect API 操作的 Lambda 函数。在 Vercel 或 Deno Deploy 等平台上,你也可以通过类似的方式使用 appstore-connect-sdk 模块。

结语

随着移动应用市场的不断扩大,开发者对于 App Store Connect API 的需求也越来越多。使用 appstore-connect-sdk 这样的工具,可以使开发者更加便捷地与 App Store Connect API 进行交互,从而实现自动化流程、提高工作效率、降低人力成本。我们相信,随着技术的不断发展和应用场景的不断扩展,App Store Connect 自动化将会有更加广阔的发展空间。

comments powered by Disqus