我正在设置CI / CD应用程序部署,以将构建版本上传到TestFlight / AppStore,因此需要在构建之前先从App Store Connect检查以前上传的构建版本
我已经生成了通过App Store Connect API进行身份验证所需的JWT令牌,并从以下位置获得了应用ID:https://api.appstoreconnect.apple.com/v1/apps
现在我要使用https://api.appstoreconnect.apple.com/v1/apps/ {id} / builds
请求与该应用程序ID相关的构建这给了我这个响应(响应数据是分页的(偏移量/限制),而不是按上传的构建版本排序):-
{
"data": [
{
"type": "preReleaseVersions",
"id": "<resource id>",
"attributes": {
"version": "1.3",
"platform": "IOS"
},
<some additional trees>
},
{
"type": "preReleaseVersions",
"id": "<resource id>",
"attributes": {
"version": "1.4",
"platform": "IOS"
},
<some additional trees>
},
{
"type": "preReleaseVersions",
"id": "<resource id>",
"attributes": {
"version": "1.2",
"platform": "IOS"
},
<some additional trees>
},
<some more data...>
],
"meta": {
"paging": {
"total": 55,
"limit": 50
}
}
}
我正在寻找的是一些查询字符串参数或不同的API或方法,通过它们可以获取最新的构建版本,而无需递归调用API以获取所有上载的版本,然后从数组中找到最大的版本。 / p>
答案 0 :(得分:0)
您可以通过检查为特定preleaseVersion
上传的版本来限制搜索:
params = { 'filter[version]' => short_bundle_version }
GET https://api.appstoreconnect.apple.com/v1/preReleaseVersions
这将为您返回包含与该版本关联的版本的url的元数据。然后,您可以提取相关的构建网址:
json['relationships']['builds']['links']['related']['data']
,
然后请求URL的关联JSON,该URL将包含内部版本ID及其uploadDate
。
答案 1 :(得分:0)
我还没有找到简单的方法,但这是我想出的最好的方法。
https://api.appstoreconnect.apple.com/v1/builds?filter[app]={app_id}&sort=-version&fields[builds]=version&filter[preReleaseVersion.version]={version_num}&limit=1
这将返回如下内容:
{
"data": [
{
"type": "builds",
"id": "ef87f7e1-20e0-4128-9c4d-7aadb23b23ed",
"attributes": {
"version": "30"
},
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/builds/ef87f7e1-20e0-4128-9c4d-7aadb23b23ed"
}
}
],
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/builds?filter%5BpreReleaseVersion.version%5D=1.2.11&limit=1&sort=-version&filter%5Bapp%5D=&fields%5Bbuilds%5D=version",
"next": "https://api.appstoreconnect.apple.com/v1/builds?cursor=AQ.GXQEGw&filter%5BpreReleaseVersion.version%5D=1.2.11&limit=1&sort=-version&filter%5Bapp%5D=&fields%5Bbuilds%5D=version"
},
"meta": {
"paging": {
"total": 29,
"limit": 1
}
}
}
从这里您只需获取“版本”。令人困惑,但是在这种情况下,版本是内部版本号。
这种方法存在一个问题。有时,即使上载了苹果,苹果也不会对其进行处理。由于某些原因,这些构建不会出现在此请求中。我不明白为什么苹果公司如此固执。我注意到,尽管如此,FastLane仍能够获取最新版本,但我尚未对其流程进行反向工程。