EAS 元数据架构

EAS 元数据中存储配置的参考。


重要 EAS 元数据 目前处于测试阶段,可能会发生重大变更。

EAS 元数据中的存储配置包含本应通过应用商店控制面板手动提供的信息。本文档概述了存储配置中对象的结构。

🌐 The store config in EAS Metadata contains information that otherwise would be provided manually through the app store dashboards. This document outlines the structure of the object in your store config.

如果你使用 VS Code Expo Tools 扩展,你可以通过编辑器中的自动补全、建议和警告获取所有这些信息。

配置模式

🌐 Config schema

在存储配置对象中,一个基本属性是 configVersion 属性。应用商店可能需要更多信息或更改现有的信息结构以发布你的应用。此属性有助于处理不向后兼容的版本变更。

🌐 An essential property in the store config object is the configVersion property. App stores might require more or change existing information structures to publish your app. This property helps versioning changes that are not backward compatible.

EAS 元数据目前仅支持 Apple 应用商店。

🌐 EAS Metadata currently only supports the Apple App Store.

PropertyTypeDescription

configVersion

number

enum: 0

The EAS Metadata store configuration schema version.

apple

object

All configurable properties for the App Store.

version

string

The app version to use when syncing all metadata defined in the store config.

EAS Metadata selects the latest available version in the app stores by default.

copyright

string

The name of the person or entity that owns the exclusive rights to the app, preceded by the year the rights were obtained. (for example, "2008 Acme Inc.")

advisory

AppleAdvisory

The App Store questionnaire to determine the app's age rating.

categories

AppleCategories

App Store categories for the app. You can add primary, secondary, and possible subcategories.

info

Map<AppleLanguage, AppleInfo>

The localized App Store presence of your app.

release

AppleRelease

The app release strategy for the selected version.

review

AppleReview

All required information to review the app for the App Store review team, including contact info and credentials. (if applicable)

苹果咨询

🌐 Apple advisory

苹果使用一份复杂的问卷来确定应用的年龄分级。 App Store 上的家长控制会使用这个计算得出的年龄分级。 EAS 元数据默认使用每个问题中最宽松的答案。

🌐 Apple uses a complex questionnaire to determine the app's age rating. Parental controls on the App Store use this calculated age rating. EAS Metadata uses the least restrictive answer for each of these questions by default.

提供最不受限制的建议
store.config.json
{ "configVersion": 0, "apple": { "advisory": { "alcoholTobaccoOrDrugUseOrReferences": "NONE", "contests": "NONE", "gamblingSimulated": "NONE", "horrorOrFearThemes": "NONE", "matureOrSuggestiveThemes": "NONE", "medicalOrTreatmentInformation": "NONE", "profanityOrCrudeHumor": "NONE", "sexualContentGraphicAndNudity": "NONE", "sexualContentOrNudity": "NONE", "violenceCartoonOrFantasy": "NONE", "violenceRealistic": "NONE", "violenceRealisticProlongedGraphicOrSadistic": "NONE", "gambling": false, "unrestrictedWebAccess": false, "kidsAgeBand": null, "ageRatingOverride": "NONE", "koreaAgeRatingOverride": "NONE" } } }
PropertyTypeDescription

alcoholTobaccoOrDrugUseOrReferences

AppleAgeRating

Does the app contain alcohol, tobacco, or drug use or references?

contests

AppleAgeRating

Does the app contain contests?

gambling

boolean

Does your app contain gambling?

gamblingSimulated

AppleAgeRating

Does the app contain simulated gambling?

horrorOrFearThemes

AppleAgeRating

Does the app contain horror or fear themes?

kidsAgeBand

AppleKidsAge

When parents visit the Kids category on the App Store, they expect the apps they find will protect their children's data, provide only age-appropriate content, and require a parental gate to link out of the app, request permissions, or present purchasing opportunities.

It's critical that no personally identifiable information or device information be transmitted to third parties, and that advertisements are human-reviewed for age appropriateness to be displayed.

Learn more

matureOrSuggestiveThemes

AppleAgeRating

Does the app contain mature or suggestive themes?

medicalOrTreatmentInformation

AppleAgeRating

Does the app contain medical or treatment information?

profanityOrCrudeHumor

AppleAgeRating

Does the app contain profanity or crude humor?

ageRatingOverride

AppleAgeRatingOverride

If your app rates 12+ or lower, and you believe its content may not be suitable for children, you can manually override the age rating.

Learn more

koreaAgeRatingOverride

AppleKoreaAgeRatingOverride

If your app rates 12+ or lower, and you believe its content may not be suitable for children, you can manually override the age rating. Same as `ageRatingOverride`, but for South Korea.

Learn more

sexualContentGraphicAndNudity

AppleAgeRating

Does the app contain graphic sexual content and nudity?

sexualContentOrNudity

AppleAgeRating

Does the app contain sexual content or nudity?

unrestrictedWebAccess

boolean

Does your app contain unrestricted web access, such as with an embedded browser?

violenceCartoonOrFantasy

AppleAgeRating

Does the app contain cartoon or fantasy violence?

violenceRealistic

AppleAgeRating

Does the app contain realistic violence?

violenceRealisticProlongedGraphicOrSadistic

AppleAgeRating

Does the app contain prolonged graphic or sadistic realistic violence?

苹果建议年龄评级

🌐 Apple advisory age rating

NameDescription

NONE

适用于完全不涉及该主题的应用。

INFREQUENT_OR_MILD

适用于偶尔提及该主题或将该主题作为非主要功能的应用。

FREQUENT_OR_INTENSE

适用于将该主题作为主要功能的应用。

苹果建议适合儿童的年龄

🌐 Apple advisory kids age

NameDescription

五岁及以下

适合5岁及以下的儿童。

六到八岁

适合6到8岁的儿童。

九到十一岁

适合9到11岁的儿童。

苹果应用评级覆盖

🌐 Apple advisory age rating override

NameDescription

NONE

无年龄分级覆盖

SEVENTEEN_PLUS

该应用包含可能不适合17岁以下儿童的内容。

UNRATED

仅限成年人。此内容无法在 App Store 上发布,但可在 iOS 的其他应用商店或欧盟网站上发布。

苹果韩国年龄分级覆盖

🌐 Apple advisory korea age rating override

NameDescription

NONE

没有年龄评级覆盖

FIFTEEN_PLUS

应用包含的内容可能不适合15岁以下的儿童。

NINETEEN_PLUS

应用包含的内容可能不适合19岁以下的儿童。

苹果类别

🌐 Apple categories

应用商店通过将应用分类到各个类别,使用主要类别、次要类别以及可能的子类别,帮助用户发现新应用。

🌐 The App Store helps users discover new apps by categorizing apps into categories, using primary, secondary, and possible subcategories.

主要类别和次要类别
store.config.json
{ "configVersion": 0, "apple": { "categories": ["FINANCE", "NEWS"] } }
主要类别、子类别和次要类别
store.config.json
{ "configVersion": 0, "apple": { "categories": [["GAMES", "GAMES_CARD", "GAMES_BOARD"], "ENTERTAINMENT"] } }
NameDescription

BOOKS

Apps with content that is traditionally offered in printed form and which provide additional interactivity.

BUSINESS

Apps that assist with running a business or provide a means to collaborate, edit, or share business-related content.

DEVELOPER_TOOLS

Apps that assist users with developing, maintaining, or sharing software.

EDUCATION

Apps that provide an interactive learning experience on specific skills or subjects.

ENTERTAINMENT

Interactive apps designed to entertain the user with audio, visual, or other content.

FINANCE

Apps that provide financial services or information to assist users with business or personal finances.

FOOD_AND_DRINK

Apps that provide recommendations, instruction, or reviews related to preparing, consuming, or reviewing food or beverages.

GAMES

Apps that provide single or multiplayer interactive experiences for entertainment purposes.

This category can have up to 2 subcategories.

GAMES_ACTION GAMES_ADVENTURE GAMES_BOARD GAMES_CARD GAMES_CASINO GAMES_CASUAL GAMES_FAMILY GAMES_MUSIC GAMES_PUZZLE GAMES_RACING GAMES_ROLE_PLAYING GAMES_SIMULATION GAMES_SPORTS GAMES_STRATEGY GAMES_TRIVIA GAMES_WORD

GRAPHICS_AND_DESIGN

Apps that provide tools or tips for creating, editing, or sharing visual content.

HEALTH_AND_FITNESS

Apps related to healthy living, including stress management, fitness, and recreational activities.

LIFESTYLE

Apps related to a general-interest subject matter or service.

MAGAZINES_AND_NEWSPAPERS

Apps with journalistic content that is traditionally offered in printed form and which provide additional interactivity.

MEDICAL

Apps focused on medical education, information, or health reference for patients or healthcare professionals.

MUSIC

Apps that are for discovering, listening, recording, performing, or composing music.

NAVIGATION

Apps that provide information to help a user get to a physical location.

NEWS

Apps that provide information about current events and/or developments in areas of interest such as politics, entertainment, business, science, technology, and other areas.

PHOTO_AND_VIDEO

Apps that assist in capturing, editing, managing, storing, or sharing photos and videos.

PRODUCTIVITY

Apps that make a specific process or task more organized or efficient.

REFERENCE

Apps that assist the user in accessing or retrieving general information.

SHOPPING

Apps that provide a means to purchase goods or services.

SOCIAL_NETWORKING

Apps that connect people through text, voice, photo, or video.

SPORTS

Apps related to professional, amateur, collegiate, or recreational sporting activities.

STICKERS

Apps that provide extended visual functionality to messaging apps.

This category can have up to 2 subcategories.

STICKERS_ANIMALS STICKERS_ART STICKERS_CELEBRATIONS STICKERS_CELEBRITIES STICKERS_CHARACTERS STICKERS_EATING_AND_DRINKING STICKERS_EMOJI_AND_EXPRESSIONS STICKERS_FASHION STICKERS_GAMING STICKERS_KIDS_AND_FAMILY STICKERS_MOVIES_AND_TV STICKERS_MUSIC STICKERS_PEOPLE STICKERS_PLACES_AND_OBJECTS STICKERS_SPORTS_AND_ACTIVITIES

TRAVEL

Apps that assist the user with any aspect of travel, such as planning, purchasing, or tracking.

UTILITIES

Apps that enable the user to solve a problem or complete a specific task.

WEATHER

Apps with specific weather-related information.

苹果信息

🌐 Apple info

App Store 是一项面向全球的服务,被许多讲不同语言的人使用。 你可以将你的 App Store 展示内容本地化为多种语言

🌐 The App Store is a global service used by many people in different languages. You can localize your App Store presence in multiple languages.

英文(美国)中的最少本地化信息
store.config.json
{ "configVersion": 0, "apple": { "info": { "en-US": { "title": "Awesome app", "privacyPolicyUrl": "https://example.com/en/privacy" } } } }
完整的本地化信息,用英语(美国)编写
store.config.json
{ "configVersion": 0, "apple": { "info": { "en-US": { "title": "App title", "subtitle": "Subtitle for your app", "description": "A longer description of what your app does", "keywords": ["keyword", "other-keyword"], "releaseNotes": "Bug fixes and improved stability", "promoText": "Short tagline for your app", "marketingUrl": "https://example.com/en", "supportUrl": "https://example.com/en/help", "privacyPolicyUrl": "https://example.com/en/privacy", "privacyChoicesUrl": "https://example.com/en/privacy/choices" } } } }
PropertyTypeDescription

title

string

length: 2..30

Name of the app in the store. This name should be similar to the installed app name.

The name will be reviewed before it is made available on the App Store.

subtitle

string

length: 30

Subtext for the app in the store. For example, "A Fun Game For Friends".

The subtitle will be reviewed before it is made available on the App Store.

description

string

length: 10..4000

The main description of what the app does

keywords

string[]

unique itemsmax length item: 100

List of keywords to help users find the app in the App Store

releaseNotes

string

max length: 4000

Changes since the last public version

promoText

string

max length: 170

The short tagline for the app

marketingUrl

string

max length: 255

URL to the app marketing page

supportUrl

string

max length: 255

URL to the app support page

privacyPolicyText

string

Privacy policy for Apple TV

privacyPolicyUrl

string

max length: 255

URL that links to your privacy policy.

A privacy policy is required for all apps.

privacyChoicesUrl

string

max length: 255

URL where users can modify and delete the data collected from the app or decide how their data is used and shared.

苹果信息语言

🌐 Apple info languages

LanguageLanguage Code

Arabic

ar-SA

Catalan

ca

Chinese

zh-Hans (Simplified)

zh-Hant (Traditional)

Croatian

hr

Czech

cs

Danish

da

Dutch

nl-NL

English

en-AU (Australia)

en-CA (Canada)

en-GB (U.K.)

en-US (U.S.)

Finnish

fi

French

fr-CA (Canada)

fr-FR (France)

German

de-DE

Greek

el

Hebrew

he

Hindi

hi

Hungarian

hu

Indonesian

id

Italian

it

Japanese

ja

Korean

ko

Malay

ms

Norwegian

no

Polish

pl

Portuguese

pt-BR (Brazil)

pt-PT (Portugal)

Romanian

ro

Russian

ru

Slovak

sk

Spanish

es-MX (Mexico)

es-ES (Spain)

Swedish

sv

Thai

th

Turkish

tr

Ukrainian

uk

Vietnamese

vi

苹果发布

🌐 Apple release

有多种策略可以将应用交到用户手中。你可以在商店审核通过后自动发布应用,也可以逐步向用户推送更新。

🌐 There are multiple strategies to put the app in the hands of your users. You can release the app automatically after store approval or gradually release an update to your users.

自动发布于 2022 年 12 月 25 日之后(协调世界时)
store.config.json
{ "configVersion": 0, "apple": { "release": { "automaticRelease": "2022-12-25T00:00:00+00:00" } } }
PropertyTypeDescription

automaticRelease

boolean|Date

If and how the app should automatically be released after approval from the App Store.

  • false - Manually release the app after store approval. (default behavior)
  • true - Automatically release after store approval.
  • Date - Automatically schedule release on this date after store approval (using the RFC 3339 format).

Apple does not guarantee that your app is available at the chosen scheduled release date.

phasedRelease

boolean

Phased release for automatic updates lets you gradually release this update over a 7-day period to users who have turned on automatic updates.

Keep in mind that this version will still be available to all users as a manual update from the App Store.

You can pause the phased release for up to 30 days or release this update to all users at any time.

Learn more

苹果评论

🌐 Apple review

在将应用发布到 App Store 之前,需要获得商店的批准。
App Store 审核团队必须拥有测试你的应用所需的所有信息,否则你的应用有被拒的风险。

🌐 Before publishing the app on the App Store, store approval is required. The App Store review team must have all the information to test your app, or you risk an app rejection.

最少的评论信息
store.config.json
{ "configVersion": 0, "apple": { "review": { "firstName": "John", "lastName": "Doe", "email": "john@example.com", "phone": "+1 123 456 7890" } } }
完整的评论信息
store.config.json
{ "configVersion": 0, "apple": { "review": { "firstName": "John", "lastName": "Doe", "email": "john@example.com", "phone": "+1 123 456 7890", "demoUsername": "john", "demoPassword": "applereview", "demoRequired": false, "notes": "This is an example app primarily used for educational purposes." } } }
PropertyTypeDescription

firstName

string

min length: 1

The app contact's first name in case communication is needed with the App Store review team is needed.

lastName

string

min length: 1

The app contact's last name in case communication is needed with the App Store review team is needed.

email

string

email

Email contact address in case communication is needed with the App Store review team.

phone

string

Contact phone number in case communication is needed with the App Store review team.

Preface the phone number with "+" followed by the country code. (for example, +44 844 209 0611)

demoUsername

string

The user name to sign in to your app to review its features.

demoPassword

string

The password to sign in to your app to review its features.

demoRequired

boolean

A Boolean value indicates if sign-in information is required to review your app's features.

If users sign in using social media, provide information for an account for review.

Credentials must be valid and active for the duration of the review.

notes

string

length: 2..4000

Additional information about your app that can help during the review process.

Do not include demo account details in the notes. Use the demoUsername and demoPassword properties instead.