最近曲棍球移至应用程序中心,我想使用 API 即时下载最新版本的 Android 和 iOS 版本。
我尝试了什么?
检查了官方 swagger api-specs
1. @GET("/v0.1/apps/{owner_name}/{app_name}/recent_releases")
2. @GET("/v0.1/apps/{owner_name}/{app_name}/builds/{build_id}/downloads/{download_type}")
但是第二个网址提供的下载网址有不同的主机,因此不起作用。
这个API:
@GET("/v0.1/apps/{owner_name}/{app_name}/builds/{build_id}/downloads/{download_type}")
如果您使用应用中心的构建服务,则下载构建版本。如果您仅使用分发服务,请尝试使用以下 API 之一来获取发布详细信息,其中包括下载网址:
https://openapi.appcenter.ms/#/distribute/releases_getLatestByUser https://openapi.appcenter.ms/#/distribute/releases_getLatestByDistributionGroup
已更新
API已更改,我们可以使用的新API是
@GET("/v0.1/public/sdk/apps/{app_secret}/releases/latest")
fun latestRelease(@Header("X-API-Token") apiToken: String, @Path("app_secret") secret: String): Call<JsonObject>
API 已更改,不再支持 /v0.1/public/sdk/apps/{app_secret}/releases/latest。 你可以用它代替
https://api.appcenter.ms/v0.1/sdk/apps/{app_secret}/releases/latest
您可以轻松获得任何版本的另一个更好的选择是使用
https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/releases/{release_id}
获取 ID 为 release_id 或“latest”的版本,以获取分发给当前用户(来自所有分发组)的最新版本。
TL,DR: 如果分发源的链接包含三个部分,您可以直接通过releases_getLatestByDistributionGroup获取:
owner_name
、app_name
和distribution_group_name
。 install_url
(或download_url
)键的值就是您所需要的。
以“Plus Messenger”源码为例:
https://install.appcenter.ms/users/rafalense-70ux/apps/plus-release/distribution_groups/public
owner_name
:“rafalense-70ux”
app_name
:“加释放”
distribution_group_name
:“公开”
因此包含来自 distgroup 的最新版本元数据的链接将类似于:
大多数 openapi 都需要令牌。如果你想不用token访问资产,除了上面提到的方法之外,还有一个隐藏的API可以获取某个分发组中的所有“公开发布”:
api/v0.1/apps/{user}/{app}/distribution_groups/{dist}/public_releases
API 返回如下内容:
[
{
"id": 9,
"short_version": "1.0",
"version": "26",
"origin": "appcenter",
"uploaded_at": "2022-04-19T13:40:13.181Z",
"mandatory_update": false,
"enabled": true,
"is_external_build": false
},
]
id
键的值可以在上面提到的第一个api上使用,将latest
替换为id就足够了。
此 API 可能类似于 https://openapi.appcenter.ms/#/distribute/releases_listByDistributionGroup,而理论上,后者需要一个令牌才能为您提供“非公开”版本。