夏天中暑吃什么药| 荷花是什么季节开放的| 26岁属什么生肖| 木克什么| 头上长虱子什么原因引起的| 总是困是什么原因| 什么水花| 室内传导阻滞什么意思| 耳朵不舒服是什么原因| 吃什么可以降胆固醇| 桃花什么颜色| 淋巴结吃什么药| 三个龙是什么字| singing是什么意思| 87属什么| 猫咪都需要打什么疫苗| 尿道炎吃什么药好| 团县委是什么单位| 赫五行属性是什么| bpo是什么意思啊| 心肾不交吃什么药| 梦见自己娶媳妇是什么意思| zd是什么意思| 查肝肾功能挂什么科| 女的肾虚是什么原因引起的| 王羲之的儿子叫什么名字| 什么叫无氧运动| 九九年属什么| 975是什么意思| 九寨沟在什么地方| 什么之财| 桃代表什么生肖| 长命百岁的动物是什么| 下面痒是什么原因女性| 不打狂犬疫苗会有什么后果| 眼睛一直跳是什么原因| 局级干部是什么级别| 创字五行属什么| 夏季养什么脏腑| 正山小种是什么茶| 鸡的祖先是什么| 外阴又疼又痒用什么药| 海螺不能和什么一起吃| 天天拉肚子是什么原因| 浅紫色配什么颜色好看| 89年属蛇是什么命| a型血和b型血生的孩子是什么血型| 吃什么对痔疮好得快| c反应蛋白偏高是什么原因| 为什么总是长口腔溃疡| 1989年是什么年| 左肺上叶纤维灶是什么意思| 女生纹身什么图案好看| 杏林指什么| mtd是什么意思| 杏仁有什么好处| 南瓜长什么样子的图片| 金丝玉是什么玉| 喝酒手掌发红是什么原因| 蒲公英和什么搭配最好| 葫芦炒什么好吃| 宥怎么读什么意思| 新生儿血糖低是什么原因| 劫色是什么意思| 人乳头瘤病毒感染是什么意思| 甲乙丙丁戊己庚辛壬癸代表什么| 女性尿浑浊是什么原因| 清鱼是什么鱼| 耳屎多是什么原因| 经常流眼泪是什么原因| 8月15是什么星座| 李隆基是李世民的什么人| 木节念什么| 肠癌吃什么| 用酒擦身体有什么好处| 肾气不足吃什么中成药| 林深时见鹿什么意思| 是什么药| rp是什么意思| 礼佛是什么意思| 加拿大的国宝是什么动物| 尿不尽是什么症状| 谷草谷丙偏高代表什么| 李嘉诚属什么生肖| a型血与o型血生的孩子是什么血型| 体脂是什么| 巩固是什么意思| 套牌是什么意思| 心度高血压是什么意思| 窦性心律什么意思| 危如累卵是什么意思| 6.27什么星座| 毛囊长什么样子| rolex是什么牌子的手表| 乙肝二四五阳性什么意思| 急性阑尾炎可以吃什么| 月经前长痘痘是什么原因| 良知是什么意思| 梦见小狗是什么意思| 什么叫同理心| 淋巴肿了吃什么消炎药| 织物是什么材质| 马来西亚信仰什么教| 三月18号是什么星座的| 老年痴呆症又叫什么名字| 木瓜不能和什么一起吃| 大利月小利月什么意思| 柬埔寨是什么国家| 柳条像什么| 番茄不能和什么一起吃| 梦见莲藕是什么意思| 喝茉莉花茶有什么好处| 红斑狼疮是什么引起的| 1987年属什么今年多大| 吃什么能补血| 人参果不能和什么一起吃| 俎是什么意思| 忌神是什么意思| 肝s5是什么意思| 痛风喝什么茶最好| 3.15是什么星座| 毛周角化症是什么原因引起的| 十二月八号是什么星座| 什么药可以消肿| 马拉松起源与什么有关| 咳嗽两个月了一直不好是什么原因| 康复治疗学什么| 同仁是什么意思| 脚底发烫是什么原因| 外耳道耵聍什么意思| 梦见洪水是什么意思| 酒曲是什么| 经常打屁是什么原因| 边缘性行为包括什么| 香蕉像什么比喻句| 俗不可耐是什么意思| 名列前茅的茅是什么意思| 中暑用什么药| 陕西有什么烟| 人肉什么意思| 长寿菜是什么菜| 新生儿嘴唇发紫是什么原因| 指甲空了是什么原因| 什么是中暑| 蓁是什么意思| 起水痘需要注意什么| 楼台是什么意思| 专业组是什么意思| 手指头抽筋是什么原因| 小腿外侧是什么经络| 白内障吃什么药| 失眠吃什么药| 喝玉米水有什么好处| 胃火吃什么食物好| crp什么意思| 熠熠生辉是什么意思| 热量是什么意思| 你的美丽让你带走是什么歌| 为什么医院不开金刚藤| 腮腺炎什么症状| 喝山楂水有什么功效与作用| 八月十七是什么星座| 医院医务科是干什么的| dx什么意思| 贴切的意思是什么| 梦见别人搬家预示什么| 宝宝头发黄是缺什么| 曱亢有什么症状| 便秘吃什么药效果好| 女性私处为什么会变黑| 夏天吃什么降火| 做放疗的人吃什么好| 防空警报是什么| 胎盘前置是什么意思| 洗面奶什么时候用最好| 牛肉和什么包饺子好吃| 金蝉脱壳什么意思| 理工科是什么意思| 亦的意思是什么| 来月经喝什么茶好| 搞基是什么意思| abi医学上是什么意思| 叶子发黄缺什么肥| 回复是什么意思| 零星是什么意思| 大腿内侧疼痛什么原因| 忐忑什么意思| 牙龈疼吃什么消炎药| 早上起来不晨勃是什么原因| 3月19日什么星座| 默念是什么意思| 溃烂用什么药治愈最快| 黄历修造是什么意思| 什么叫包皮过长| 独角兽是什么动物| 车前草长什么样子| 胚包括什么| 血压低吃什么最快最有效| 什么叫双相障碍| 为什么出汗有酸臭味| 中国什么姓氏人口最多| 苛捐杂税是什么生肖| 鸭胗是什么器官| 八字带什么的长寿| 五行属火适合什么行业| 九六年属什么的| igm阳性是什么意思| 心思重是什么意思| 吸顶灯什么牌子的好| 什么是云| 生存是什么意思| 蜱虫长什么样| 什么叫化疗为什么要化疗| 痕迹是什么意思| 老年人尿血是什么原因| 小心眼什么意思| 手掌发热是什么原因| 十一月二十八是什么星座| 心情烦躁吃什么药| 90年属什么的生肖| 仙草是什么草| 玫琳凯属于什么档次| 血小板低什么症状| 牛油果核有什么用| 6月13号是什么星座| 吃激素有什么副作用| 凌晨一点多是什么时辰| 广西是什么族| 什么的南瓜| 龟头炎用什么药好| 报价是什么意思| 治白内障用什么药最好| 血脂异常是什么意思| 什么减肥药好使| 妄想症有什么症状| 喉咙痛流鼻涕吃什么药| 两边白头发多是什么原因造成的| 自卑什么意思| 4月17日是什么星座| 高密度脂蛋白是什么| 10月11号是什么星座| 吃什么可以治拉肚子| 红细胞计数偏高是什么意思| 吃什么东西会误测怀孕| 谁也不知道下一秒会发生什么| 什么人容易得类风湿| 这叫什么| 什么是龙抬头| 女人小便带血是什么原因引起的| 男性性功能下降是什么原因| 疖肿挂什么科| 多酚是什么| 乐色是什么意思| 检查肝脏挂什么科| 什么减肥药最管用| 口吃什么意思| 血糖高忌什么食物| 子宫内膜炎吃什么药| 结婚5年是什么婚| 梦见和死去的亲人吵架是什么意思| AFP医学上是什么意思| 比基尼是什么| 鲸鱼用什么呼吸| 做梦梦到怀孕了是什么意思| 百度

View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Open Menu Close Menu
  • Collections
  • Topics
  • All Videos
  • About

More Videos

  • About
  • Transcript
  • 世界互联网大会“网络传播与社会责任”分论坛成功举办

    百度   爆红  资深戏骨,凭借声音成网红  总导演徐晴坦言,《声临其境》不会邀请那些“满世界上综艺节目”的艺人。

    Make routine tasks in App Store Connect a thing of the past when you automate your workflow with the App Store Connect API. Learn how you can manage more about your presence on the App Store with the App Metadata API, or use the new Power and Performance Metrics and Diagnostics API to access the same aggregate data that drives the Power and Performance analysis tools in Xcode. Whether you're managing team members and provisioning profiles, adding or removing beta testers, or downloading your sales and financial reports, this comprehensive API makes automation of these processes a snap.

    Resources

    • App Store Connect API
    • App Store Connect API Resources
    • Learn more about App Store Connect
      • HD Video
      • SD Video

    Related Videos

    WWDC21

    • Get ready to optimize your App Store product page
    • Meet in-app events on the App Store

    WWDC20

    • Identify trends with the Power and Performance API
    • What's new in App Store Connect
  • Search this video…

    Hello and welcome to WWDC.

    Hello. Welcome to "Expanding Automation with the App Store Connect API." My name is Geoff Coffey. I'm an engineer on App Store Connect. Today, we're gonna look at some new capabilities coming to the App Store Connect API later this year.

    We introduced this API two years ago at WWDC and since then, the response from our users has been really great. We love seeing and hearing about how you use the API to streamline your app development and TestFlight programs. For the first release, we focused on things you do repeatedly in App Store Connect. Things like managing the users on your team, creating provisioning profiles, adding and removing beta testers and downloading your sales and financial reports. Since you do these things over and over again, we gave you the tools to automate them so you have more time to focus on your apps. Here's where we started two years ago. But there are important parts of your app development workflow that aren't covered by the API. I'm excited to announce two powerful new extensions coming to the App Store Connect API later this year. First, we're adding a comprehensive App Metadata API so you can manage your presence on the App Store, and the new Power and Performance Metrics and Diagnostics API lets you programmatically access the same aggregate data that drives the Power and Performance analysis tools in Xcode. This is a huge update to the App Store Connect API. We've added over 200 new endpoints, more than doubling the size of the API in all. You can manage app information like your app categories, global availability, primary locale and license agreements. You can make new versions or add new platforms, upload app previews and screenshots and add and update localized information like your app name, description and keywords, and so much more. The API has complete coverage of app version metadata so you can do everything from creating a new version through to submitting for App Review. I do want to note that you'll still need to use the App Store Connect website to manually release your app and to configure in-app purchases and Game Center. With so much new to discover and code against, we want to make the process of using the API as easy as possible. So, we're also making a full OpenAPI specification file available to you to download. If you're not familiar with OpenAPI, it's the open standard version 3 of the popular Swagger format. You can view it in the Swagger-UI for a quick API reference, or better yet, feed it into a code generator to make bootstrapping your API integration in almost any language faster and easier. We've also improved the documentation. Of course, all the new endpoints are documented, now with clearer complete request and response examples. We've added several new explanatory articles on topics like rate limiting and file uploads.

    And we're providing downloadable sample code that demonstrates important API concepts like creating and signing authentication tokens, interacting with API responses and using the new asset upload APIs.

    So, let's take a look at what you can do with the new App Metadata API. This is my app, Forest Explorer. I've been hard at work on a new version, and I'm ready to submit this version to the App Store. Let me show you how I would do this using the new API.

    We're going to focus on five areas. We'll create a new version, set pricing, update the app metadata, associate a build with that version and then submit that new version for App Review. Let's start by creating a new version of our app.

    In App Store Connect, you do this on the App page using these links here in the sidebar. I can make a new version of my iOS app, or I can add a macOS or tvOS version. The API supports the same operations. In the API, we have a resource called Apps. You have one of these for each of your apps.

    And each app has a relationship to App Store Versions. They have a platform, iOS, tvOS or macOS, and they have a version string, which is the version number that you want to show in the App Store. So all we need to do is create a new App Store Version. When we do that, we'll link it to our app by ID. So really, the first thing we need to do is look up our app identifier. We can do this with the API. I'm going to do a GET on v1/apps, and I'm going to filter by bundleID since that's a good way to find exactly the app I'm looking for. If I send that request, I get a successful 200 response. The response contains the app resource, and here we see the app identifier. In the App Store Connect documentation, you sometimes see this ID called the Apple ID of your app. We'll take note of this ID and we're ready to make a new version. We do a POST to v1/appStoreVersions, we supply the platform and our new versionString and we include a relationship link to the app. And here's where we use that App ID we just looked up. I send this request, and I get a 201 CREATED response. This tells us App Store Connect has created this new version. If we were to log in to App Store Connect right now, we'd see this version in the sidebar. And here in the response, we see the identifier App Store Connect has assigned to this version.

    Now we want to set pricing and availability for our app.

    On the App page in App Store Connect, you start by clicking Pricing and Availability here in the sidebar which takes us to the Pricing and Availability page. And in particular, today we're going to look at the Price Schedule. Now, I'm not going to show it today, but you can also use the API to manage your app preorders and your app's global availability. So, how does pricing fit into the API resource model? Once again, we start with the Apps Resource. It has another relationship to a resource called App Prices. Each App Price has a startDate. For the current price, this will be null. But this is a Price Schedule, so we may have multiple planned future price changes. In that case, our app will have multiple prices, and each additional price will have a startDate, which is the date that price takes effect around the world. Each App Price also has a Price Tier. These are exactly the same tiers you're familiar with from App Store Connect. The free tier, Tier 1, which is 99 cents in US dollars, and so on. To select a tier in App Store Connect, you would normally refer to All Prices and Currencies page. Let me show you. Back on the Pricing and Availability, we click All Prices and Currencies here, and we see a list of prices like this. It has tiers down the side and App Store territories across the top, and for each tier and territory, we see individual price points. Each price point has two values: the price the customer pays for the app in the currency relevant to that territory, and the proceeds you will earn for each sale. Back on the resource model, the price tier here is actually a relationship to another set of resources. These gray resources are read-only reference data, the exact same data you just saw on the All Prices and Currencies page. Each price tier contains a collection of price points, one point for each app store territory. And these price points tell you the customer price and the proceeds. Okay, with all of that in mind, let's use the API to look at the current Price Schedule for our app. We do a GET on v1/apps and then the ID of our app, and then the prices relationship, and I'm also going to include the related priceTier so we can see that in the response. I execute this request and I get back a list of prices. In this case, we have just one price. The startDate is null, meaning it's currently in effect, and here's the priceTier relationship where I can see it's linked to Tier 1. Let's compare this JSON data to what we see in App Store Connect. If we look closer at the Price Schedule, we can see the same basic information. We have one price, it's currently in effect, at Tier 1.

    Now, suppose we want to run a special pricing promotion for our app. Starting on June 29th, for one week, let's give our app away for free. In other words, we want the Price Schedule to look like this.

    Now we have three prices. Tier 1 is in effect until June 29th. Starting on June 29th, we'll switch to the free tier. And then a week later, on July 6th, we want it to change back to Tier 1. Let's make this Price Schedule change using the API.

    Although we're adding three prices, I want to make a single atomic change to the overall Price Schedule. So, we're going to make a PATCH request against the app itself. We're not changing any app attributes, so we leave the attribute section off, but we are changing the prices relationship. Now, if you're familiar with App Store Connect, you know that we would normally add the IDs of the resources we want to associate with the app right here. But in this case, the app price resources don't actually exist yet. We need to create them and attach them to the app, all in a single request. Since the prices don't exist, they don't have IDs, so let's assign them temporary IDs for now. We have three prices, so we need three temporary IDs. I'll use new-price-1, new-price-2 and new-price-3. You can use any values you want for these temporary IDs. The important things is I'm using this syntax with a dollar sign and braces around the ID. That serves as a signal to the API that this is a temporary ID for a resource that doesn't exist yet, one that we will be defining in this same request. Now we need to define those new app price resources. Here's the first one. We give it the first temporary ID of new-price-1, again with that dollar sign syntax. It has a startDate of null, meaning this is the price we want right now. You can also just leave the startDate off in this scenario. It would do the same thing. And finally, we link it with Tier 1. Next, we define the second price. It looks like this. It has an ID of new-price-2, a startDate of June 29th, and we link it to Tier 0, the free tier.

    And finally, we define new-price-3 with a date of July 6, and we'll switch back to priceTier 1. Now bear in mind, we haven't sent any requests for this Price Schedule change. We're still building the JSON payload for that single atomic request I talked about before. Here's the request we were working on. And now we need to add the prices we just defined into this request. We add an "included" section to our request entity, and then we take those three new prices and insert them into this included array. The final payload looks like this, or at least as much of it as I can fit on the screen. Now, the order of the resources in the included array doesn't matter. The important thing is that these temporary IDs up here match one-to-one with the temporary IDs down here.

    When we send this request, App Store Connect will create these three prices, assign them real IDs and link them to our app, all in one atomic operation. Let's send it. We get back a 200 response, and our new Price Schedule is now applied. Now, it's important to note that price changes and available territory changes go to the App Store right away. If your app is already released, the changes will take effect immediately. They will not wait for your next version to go through App Review and then be released. So when experimenting with the API, be sure not to test on live apps.

    Now let's talk about editing your app metadata. This is a really big area in the API with lots of endpoints, so let me show you around first.

    Back on our Version page, I can click App Information, and that takes me to a page where we see app-level information including the localized app name, subtitle and privacy policy and the App Store categorization. And if we click here on our version, we see version-level information. This is metadata that changes on a platform-by-platform basis like screenshots, promotional text and keywords. The API resource model works in much the same way. Here's what we've seen so far. The app also has a relationship to a resource called App Info. This is where you'll find app-level information like your App Store categorization. And some of that app information is localized, so each App Info has a relationship to multiple App Info Localizations, one for each locale.

    Here you'll find attributes like app name, subtitle and privacy policy. And, of course, there's localized data at the version level too. We call this resource the App Store Version Localization. The version has one of these for each locale as well. Let's flip back to App Store Connect and look a little closer at our version page. I'm looking at the US English localization here, and if we look closer at screenshots and app previews, we see we have multiple display types like the 6.5-inch iPhone, the 5.5-inch iPhone or the 12.9-inch iPad Pro. Within each display type, we can upload up to three previews and up to ten screenshots. All of this is modeled in the API through resources and relationships as well. The version localization has a relationship to multiple app screenshot sets, one for each display type. The localization also has multiple app preview sets. And finally, each screenshot set has a relationship to multiple screenshots, and each preview set to multiple previews. There's a lot more to app version metadata, but these are the major resources we'll talk about today.

    So let's say we want to upload a 6.5-inch iPhone app preview in the US English localization to promote my new version.

    In other words, let's find the US English localization, get the app preview set and add a new preview to it.

    Every version has at least one localization: the one in your app's primary locale. We can fetch that localization for our versions like this. We issue a GET request to the appStoreVersionLocalizations URL for our version ID. The response includes all of our localizations including this one for US English. And down here we see the related URL for the appPreviewSets. Let's GET this URL, and we get back an empty data array. This tells us we don't have any app preview sets for this localization. So, let's add one. As you probably would guess, we POST to v1/appPreviewSets. We'll use a previewType of IPHONE_65, that's the 6.5-inch iPhone, and we link it to the localization we were just looking at by ID. We send this request, and the preview set has been created. Now we're ready to add an app preview.

    We send this request, and the preview set has been created.

    But a preview is more than just some attributes and relationships. You have a video file that you need to upload to App Store Connect. This is a type of API interaction you've never seen before in the App Store Connect API, so let's step back a minute and look at how this works. App previews are just one type of file you can upload using the API. You could also upload screenshots, App Review attachments and GeoJSON routing app coverage files. But whatever you're uploading, the fundamental problem is the same: you have this file on your disk, we call it an asset, and you want to get it up to App Store Connect. But the Internet is standing in the way. Our asset upload process is a multi-step process designed to ensure that you can get even large video files into App Store Connect as quickly as possible, and get them there reliably even if the Internet connection isn't always perfectly reliable.

    It works like this. First, you create a reservation. Then you upload the actual assets, possibly in multiple parts. Then you commit the asset. And finally, you check for errors. Let's try it out.

    You create an app preview reservation by doing a POST to v1/appPreviews.

    And you tell App Store Connect the name of the file you'll be uploading and the file size in bytes. You link it to the preview set we just created, and App Store Connect reserves a place for this preview. It uses the file size to create a set of upload operations. For small assets, this is simple: just an HTTP PUT operation to upload the data to our servers. But for large assets, we will send you back multiple operations. Each operation includes the same properties: an HTTP method, a URL, a length in bytes, an offset in bytes and a set of request headers. You then take these operations and use the information in them to split your asset into multiple parts: one part for each operation.

    You'll use the length and offset values in each operation to determine the range of bytes in the file associated with each part. Note that you should always be prepared to receive multiple operations. We may use various factors to decide how many operations are needed. So, an asset that you upload in just one part today might require multiple parts tomorrow. So your code should always expect the possibility of multiple upload operations.

    Okay. With our asset split into parts, we're ready for step number two. Using the method, URL and request headers in each upload operation, you upload the associated part. You can do this one at a time or you can upload multiple parts at once.

    You can upload these parts in any order. It doesn't matter at all. Of course, sometimes the upload will fail. That's okay. Just try the part again. If one part fails, there's no need to re-upload the other parts. Just keep trying until all of the parts are up. Once they are, you're ready for step number three, which is to commit the asset. To do this, you PATCH the preview URL and mark the preview uploaded by setting its uploaded attribute to true. You also need to provide an MD5 checksum of the original source file. App Store Connect will use this checksum to make sure the multiple parts were divided and uploaded correctly. We send this request. App Store Connect then reassembles the asset, validates the checksum, checks the file integrity, like, is this actually a video file, and checks various metrics like video length, dimensions and audio track. If everything looks good, the asset is marked complete, and your app preview is ready to submit for review. Bear in mind that asset processing is asynchronous. For large assets, it may take some time. You can use the API to re-fetch an asset at any time to check on its status.

    If we fetch the app preview, we can check its state attribute right here. Once validation is successful, the asset state will switch to COMPLETE. If anything goes wrong, the state will instead change to FAILED and the errors array will tell you what went wrong so you can delete the asset, fix the problem and re-upload. We looked closely at app previews and a few other app metadata-related resources today, but we only scratched the surface. There's lots more metadata you can manage and edit with the API. Be sure to check out the new App Metadata section in the documentation. It has a complete list of API endpoints related to app and version metadata. Now let's look at adding a build to our new version. In App Store Connect, you do this on the version page in the Build section right here. Where does that fit into our resource model? Right here. The App Store version has a relationship to its associated build. Of course, you don't actually create builds with the API. You create your builds with Xcode and you upload them using Xcode or using Transporter. So presumably, the build is already in App Store Connect. We just need to look up its ID and associate it with the version. This is probably starting to look familiar to you now. We GET v1/builds. I'm gonna filter by the app ID, the pre-release version number and the build version number. And from the response, I'll grab the build ID. Now we can PATCH the build relationship on our new version with that build ID. We send it in and we get back this 204 NO CONTENT response. Since this was a relationship update, there's no resource data to return. So, this is a successful response message telling us the build and version IDs were valid, and they're now correctly associated with each other.

    With metadata complete and a build added, we're ready to submit for Review.

    In App Store Connect, this is a three-step process. First, we provide the contact info, demo account and any notes that App Review may need. Then, if necessary, we can upload attachments. And finally, we click submit for review. In the API, we once again start with the App Store version. It has a relationship to App Store Review Details, where you can add information for App Review. This in turn has multiple App Review attachments. These work just like app previews, allowing you to upload files to App Store Connect.

    To add App Review details to a new version, just POST to v1/appReviewDetails, provide the necessary information and associate it with the version. And we're good. App Review details are now attached to our version. If you've already added App Review details, you can edit them using a PATCH instead. You can edit this information as often as you want up to the point where you actually submit for review.

    Now let's see how we do that. How do we actually click that Submit for Review button using the API? Once again, we have another resource. It's called the App Store Version Submission. To submit a version to the App Store, we just create one of these. We POST to v1/appStoreVersionSubmissions, link it to our version and send the request. And that's it. Our version is on its way to App Review. If we made a mistake and want to pull this app back before it gets reviewed, we can just delete this App Store Version Submission resource.

    Of course, if our version isn't ready yet, say we forgot to add screenshots, then creating a submission will fail with a 400 response and that response will contain error messages explaining what we need to fix. And remember, if your version requires in-app purchases or Game Center configurations, you'll need to set those up in the App Store Connect website before you submit for review. That's the App Metadata API. Hopefully this gives you a sense of how these API resources all fit together. Using them, we were able to successfully create a version, provide all the necessary App Store information and send it in to App Review. If we have auto-release enabled, our app will go to the App Store as soon as review is complete. You can also release manually in App Store Connect on the web or on iOS if you prefer.

    Now let's turn to the new Power and Performance Metrics and Diagnostics API. This is the Power and Performance view in Xcode. It helps you monitor app performance indicators like memory usage, launch time, hang rate, disk writes and battery consumption using data collected from real customer sessions. You can access this same information using the API. I'm going to give you a high level view of how to access this data and how it fits into the larger API resource model. But we actually have a whole session devoted to this feature where you'll learn more about this new API, including how to interpret the response data and find insights into your app's behavior. So be sure to check out the "Power and Performance App Store Connect API" session video as well.

    You can get performance metrics for recent versions of your app by requesting the perfPowerMetrics relationship off the app URL. The metrics data uses a custom media type, so you need an appropriate Accept header as well. That will get you metrics for recent versions of your app, but you can also fetch metrics for a particular build using the perfPowerMetrics relationship off the build URL instead. Either way, once we send this request, we get back a successful response with a structured set of metrics data. In this, I can see that the first set of metrics are HANG metrics and the first data set is the hang rate expressed in seconds per hour.

    Check out that other session to see the rest of this response and learn how to interpret this data. But there are two more endpoints I want to show you. For Disk Writes in particular, once you've identified a problem spot, you can view diagnostic information, including call stacks, to help pinpoint the source of potential problems. In Xcode, we show you a list of diagnostic signatures. These are just places in your app where you do disk writes. These signatures are sorted by percentage contribution to total disk writes, so the biggest contributors are up at the top. And for each diagnostic signature, you can view the actual call stack and additional diagnostic details. You can get this same information using the API. Once again, we start with the build URL and we fetch its new diagnosticSignatures relationship. Let's get it. And the API responds with a list of diagnostic signatures. These are standard App Store Connect API resources. They have a signature attribute. This identifies where in your run time the disk write takes place and a weight which tells you how much this signature contributes to total writes. Each signature also has a relationship to its log data. If we take this link and once again use that custom media type, we get back diagnostic data. In addition to app information and total disk writes, you'll find detailed call stack information in this response.

    And that's the App Metadata and Power and Performance Metrics and Diagnostic APIs. Together these represent a big update to the App Store Connect API. We look forward to seeing how you take advantage of them. Thank you.

Developer Footer

  • Videos
  • WWDC20
  • Expanding automation with the App Store Connect API
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Extensions
    • App Store
    • Audio & Video
    • Augmented Reality
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright ? 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines
    ono是什么意思 毕业典礼送什么花 9月12是什么星座 明知故犯的故是什么意思 2000年龙是什么命
    主管护师是什么职称 郡字五行属什么 养字五行属什么 维生素c高是什么原因 分开后我会笑着说是什么歌
    科举制什么时候废除 前列腺炎有些什么症状 舌苔发黑是什么病的前兆 子母门是什么意思 鸟加一笔是什么字
    什么钓鱼愿者上钩 同房痛什么原因引起的 狗懒子是什么意思 吃什么东西增强免疫力 娘子啊哈是什么歌
    小儿厌食吃什么药最好hcv7jop9ns1r.cn 静电是什么imcecn.com 为什么加油站不能打电话hcv9jop6ns9r.cn 百依百顺是什么生肖hcv8jop9ns9r.cn 卵泡刺激素是什么意思hanqikai.com
    马卡龙是什么hcv8jop7ns4r.cn 小寄居蟹吃什么hcv9jop3ns8r.cn 皿是什么意思520myf.com 什么是白脉病1949doufunao.com 既视感是什么意思wuhaiwuya.com
    体内湿气重吃什么药sanhestory.com adidas是什么品牌mmeoe.com 水粉是什么hcv8jop6ns4r.cn 什么人会得胆囊炎hcv9jop1ns9r.cn 女字旁一个朱念什么bfb118.com
    g是什么计量单位liaochangning.com 送女朋友什么礼物hcv9jop2ns5r.cn 睡多了头疼是什么原因hcv9jop1ns0r.cn 男人要的归属感是什么hcv7jop4ns7r.cn 永浴爱河是什么意思hcv8jop6ns2r.cn
    百度