跳过内容

常见问题

如果您在这里找不到答案,请问!既可以提交问题,也可以在 Discord 工作

Code push,也被称为“__CAPGO_KEEP_4__”(OTA)是一项云服务,允许Capacitor开发者在生产环境中部署更新。Capgo目前支持Android、iOS和Electron。

“Code Push”是React Native社区使用的部署功能名称,从 微软Expo,但它们都没有支持Capacitor。

是否需要将Capgo和CLI的版本匹配到插件或Capacitor版本?

Section titled “是否需要将Capgo和CLI的版本匹配到插件或Capacitor版本?”

不需要。请始终使用最新的Capgo和CLI()。Capgo和CLI控制台遵循自己的版本管理,并保持与任何支持的更新插件版本兼容。__CAPGO_KEEP_2__插件遵循__CAPGO_KEEP_3__版本;请参阅npx @capgo/cli@latest). The CLI and Capgo Console follow their own versioning and stay compatible with any supported updater plugin major. Capgo plugins follow Capacitor majors; see Capgo versioning 对于长期支持(LTS)标签 @lts-v7.

什么是捆绑包和发布之间的区别?

标题:什么是捆绑包和发布之间的区别?

我们使用“发布”一词来指代为应用商店准备的二进制文件。在后续生成捆绑包Capgo时,需要知道已发送到应用商店的确切二进制文件。

我们使用“捆绑包”一词来指代可以应用于发布以更新其为新code的补丁。 npx @capgo/cli@latest bundle upload 命令用于生成捆绑包从您的新本地code,然后将其发送给您的用户。

是否有Delta更新文件路径限制?

标题:是否有Delta更新文件路径限制?

是:

  • 零字节文件: CLI 日志 Ignoring empty file... 并排除 Delta 清单中的空文件。它不会使上传失败,因此一个空文件可以改变最终的包而不会停止您的部署。请勿在 Delta 包路径中包含零字节文件。
  • 带有空格的路径: 当一个包路径包含空格时,Delta 上传会早早失败并显示明确的错误。请在上传 Delta 更新之前重命名文件或目录以去除空格。

查看 了解 Delta 更新 了解 Delta 更新

路线图是什么? https://github.com/orgs/Cap-go/projects

我们的团队也在公共领域工作,所以你随时可以看到我们正在做什么。我们很高兴通过 Github 问题或 Discord.

我可以与团队一起使用 Capgo 吗?

标题为“我可以与团队一起使用 Capgo 吗?”

是的!所有计划都支持无限开发者。我们只限制应用指标(MAU、存储和带宽)到每个组织。

查看 团队 更多信息。

Capgo 会存储我的源代码 code 吗?

标题为“ Capgo 会存储我的源代码 code 吗?”

No. Capgo 服务器永远不会看到您的源 code。当您运行时 npx @capgo/cli@latest bundle upload, Capgo 会存储一个 zip 文件,其中包含最小化/编译的 code - 与浏览器接收的相同 code,而不是您的源 code。

为了额外的安全性,您有两个选项:

  • 端到端加密:在上传之前对您的包进行加密,以保护其在存储和传输过程中,并防止第三方使用您的私钥生成有效的加密更新。这不会使已发布的 Web 资产无法逆向工程,因为公共密钥已包含在分布式应用中。
  • 外部 URL 上传:将包存储在您的服务器上,并仅向 Capgo 提供下载链接并选择 --external <url>

请参阅我们的隐私政策: https://capgo.app/隐私

包文件是否是私密数据?

关于包文件是否是私密数据的部分

No. 应用程序用户可以下载的公共 Web 资产是捆绑文件。任何知道捆绑 URL 的人都可以获取这些文件,Capgo 在设置和文档中告知用户这一点。

访问捆绑文件并不被认为是数据泄露。不要将机密信息、凭据、个人数据或受管辖数据放入应用程序捆绑中。如果您需要为高安全性用例提供更强的保密性,请使用端到端加密,但仍然从安全报告的角度将运输的应用程序code和资产视为公共。

我可以从我的 CI 系统使用 Capgo?

“我可以从我的 CI 系统使用 Capgo?”

是的,Capgo 是旨在从 CI 系统使用的。我们已经发布了一个指南 Android 和 Github ActionsiOS, 和 GitLab. 其他 CI 系统应该类似。

请随时联系我们GitHub问题或Discord,如果您遇到任何问题。

如何与Firebase Remote Config或Launch Darkly相关?

标题:如何与Firebase Remote Config或Launch Darkly相关?

Code推送允许在设备上添加新的code/替换code。Firebase Remote Config和Launch Darkly都是配置系统。它们允许您更改应用程序的配置,而无需发布新版本。它们不打算取代code。

这会添加多少依赖项的脚步?

标题:这会添加多少依赖项的脚步?

我最近没有测量,但我预计code推送库将在Capacitor应用中添加小于1兆字节。我们知道如何使其更小,当这成为优先事项时。如有阻塞,请告知我们!

Capgo在iOS 18.4模拟器上是否可用?

标题:Capgo在iOS 18.4模拟器上是否可用?

No. 由於 iOS 18.4 Simulator 上游問題,Capgo 在該環境下無法穩定運行。請在實體設備或使用不同版本的 iOS 模擬器進行測試。

查看 React Native 問題詳情: facebook/react-native#50510

code 是否能夠與大型應用程式一起工作?

code 是否能夠與大型應用程式一起工作?

是。code 無論應用程式大小,均能夠進行更新。如前所述 __CAPGO_KEEP_0__ 可以更改您的應用程式中的任何 JS __CAPGO_KEEP_1__,無論大小如何。, Capgo can change any JS code in your application regardless of size.

您可以使用 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ push 進行什麼?

您可以使用 Capgo code push 進行什麼?

关于如何使用 Capgo code 推送的内容

我们看到各种使用场景,包括

  • 紧急修复生产应用
  • 将 bug 修复推送给使用较旧版本的应用用户
  • 持续推送(例如每小时)

注意,大多数应用商店不允许推送改变应用行为的 code。请参见 下面 更多信息

MAU(每月活跃设备)是指在一个滚动 30 天周期内与 Capgo 进行联系的不同设备。同一台物理设备用于两个不同的原生应用 ID 时,每个应用 ID 都算作一次 MAU;它们不会在两个应用 ID 之间被合并。

If your flavors differ only in their web layer or update routing, use one native app ID with channels。 That keeps the flavors under one Capgo app and makes releases simpler. Use separate native app IDs when a flavor needs a distinct bundle ID, signing identity, entitlement set, or store listing.

On iOS, v7.25.0+ keeps the random, app-scoped device ID through normal reinstalls using Keychain. On Android, use v7.50.1+ (or v5.50.1+ and v6.50.1+ on those release lines); the ID is restored only when Android Backup/Restore retains the app preferences. Disabling backup, excluding those preferences, or clearing app data generates a new device ID. Updating the app does not create a new device ID.

对于测试和开发构建,关闭生产渠道上的开发构建和模拟器分发。 这控制了分发,而不是MAU:设备仍然可以在联系Capgo时被计数。 为了将其排除在生产使用之外,禁用实时更新,并不要调用生产Capgo端点。 请参见 测试原生构建无实时更新 for the exact settings.

什么不能用Capgo code推送

标题:什么不能用Capgo code推送

Capgo无法改变原生code,例如Java、Kotlin、Objective-C、Swift、原生插件或原生配置。 这些更改需要发布新的原生应用程序。 请参见 应用商店和Google Play政策.

我可以通过Capgo更新capacitor.config.ts更改吗

标题:我可以通过Capgo更新capacitor.config.ts更改吗

不。 简短规则:Capgo可以发送生成的Web构建文件夹,包括HTML、CSS、JavaScript、资产和纯JavaScript包更改,打包在输出中。 原生__CAPGO_KEEP_1__更改,例如Java、Kotlin、Objective-C、Swift、原生插件或原生配置,需要发布新的原生应用程序。 capacitor.config.ts或本地插件配置、本地包安装或升级,以及必须更新iOS或Android项目的任何内容 npx cap syncnpx cap copy Capacitor实时更新的替代方案

The Capacitor configuration file is read at native build time and compiled into the native app binary. If you need to change your Capacitor configuration, you must:

  1. Capgo配置文件在本机构建时读取并编译到本机应用程序二进制文件中。如果您需要更改__CAPGO_KEEP_1__配置,请务必 capacitor.config.ts 更新
  2. 本地npx cap sync 重建您的本机应用程序(
  3. 后跟本机构建)

Capgo Build可以编译和签署一个准备好的原生iOS或Android项目,并且当配置时,将签名结果提交到App Store Connect或Google Play。您可以保留现有的CI用于私有依赖项、Web构建、Capacitor同步和自定义原生准备;Capgo接收准备好的原生项目用于原生构建步骤。

See Capgo Build构建配置参考 用于工作流和商店提交选项。

什么是Capgo存储在磁盘上的内容以及存储的位置?

标题为“什么是Capgo存储在磁盘上的内容以及存储的位置?”的部分

The Capgo updater (included in your application when you build your app) caches the latest downloaded bundle in the only directory that capacitor allow to load code. On Android, this is located in /data/user/0/com.example.app/code_cache/capgo_updater 尽管该路径的基础由Android系统提供并且可以在运行时动态更改。 On iOS设备,数据存储在 Library/Application Support/capgo.

Capgo命令行工具(例如 npx @capgo/cli@latest bundle upload在 npm 缓存中,npm 登录信息存储在您的家目录中 ~/.capgo.

Capacitor 的热重载是一种开发环境特性,允许您在开发期间更改 Code。它需要在本地机器上建立 __CAPGO_KEEP_2__ 应用程序的代理连接

Hot reload is a feature of Capacitor that allows you to change code on the device during development. It requires building the Capacitor app with a proxy to connect to your local machine.

Code code 推送支持哪些类型的更改?

Capgo can change any JS code in your application. This includes app code and generated code. You can also update dependencies in package.json as long as they don’t require native code changes.

我们没有计划支持改变原生code(例如Java/Kotlin在Android或Objective-C/Swift在iOS),并且工具将警告您如果它检测到您已更改原生code,因为它不会包含在捆绑包中。

这是否支持Web?

标题:这是否支持Web?

Code推送对于Web来说并不是必需的,因为Web已经以这种方式工作。当用户打开Web应用时,它会从服务器下载最新版本,如果需要。

如果您有code推送与Web的用例,我们很想知道!

这是否在iOS、Android、Mac、Windows、Linux等上工作?

标题:这是否在iOS、Android、Mac、Windows、Linux等上工作?

是的。

截至目前,我们已经专注于Android、iOS和Electron的支持,code推送在这三个平台上已经生产就绪。

Capgo支持哪些操作系统版本?

关于 Capgo 支持的操作系统版本的部分

Capgo 支持的操作系统版本与 Capacitor 支持的版本相同。

Capacitor 目前支持 Android API 22+ 和 iOS 13.0+: https://capacitorjs.com/docs/main/reference/support-policy

Capgo 支持哪些版本的 Capacitor?

关于 Capgo 支持的 Capacitor 版本的部分

Capgo 目前仅支持 Capacitor 的最新稳定版本。我们也可以支持 Capacitor 的较旧版本,但我们还没有建立必要的基础设施来维护这些版本。我们打算在未来支持更多的 Capacitor 版本,包括我们的企业客户的任何版本。 https://github.com/Cap-go/capgo/issues/1100

Capgo 跟踪 Capacitor 的稳定版本,并在稳定版本发布后几小时内进行更新。我们的更新系统是自动化的,更新需要几分钟的时间。我们还进行了额外的手动验证步骤,之后才会将更新发布到我们的服务器上。

这与 App/Play Store 的审查流程或政策有何关系?

标题:如何与App/Play Store评审流程或政策相关?

Capgo仅将更改应用到Capacitor的Web层:HTML、CSS、JavaScript和资产已经在应用的WebView中运行。它不会更改原生二进制文件、原生插件、权限、特权、签名或商店元数据。

对于每个原生更改以及可能影响应用目的或功能的材料更改,请使用原生商店发布。保持更新在您提交并向用户透露的应用体验中。

Capgo是否保证App Store或Google Play的批准?

标题:Capgo是否保证App Store或Google Play的批准?

不。苹果和谷歌将根据每个应用的实际情况进行评审和发布,Capgo无法保证单独的批准或评审结果。您的团队仍然负责应用的内容、披露、更新范围和遵守当前商店政策。

为了评审和发布规划,请直接阅读官方政策: 苹果App Store评审指南谷歌Play设备和网络滥用政策.

我可以在我的国家使用Capgo吗?

标题:我可以在我的国家使用Capgo吗?

我们尚未尝试限制任何国家对Capgo的访问。

我们认识到一些国家对从该国访问的URL有所限制。Capgo目前使用Cloudflare Cloud进行托管,包括R2存储和Cloudflare工作者。

Capgo使用的以下URL:

  • https://api.capgo.app — 由命令行工具用于与__CAPGO_KEEP_0__服务器进行交互,以及__CAPGO_KEEP_1__更新器在用户设备上检查更新。 npx @capgo/cli command line tools to interact with the Capgo servers as well as the Capgo updater on users’ devices to check for updates.
  • — 由命令行工具用于上传和下载npx @capgo/cli

如果所有这些URL都可以从您的国家访问,那么Capgo应该可以正常工作。

如果您的地区需要阻止访问任何这些URL,请告知我们,我们可以与您合作找到解决方案。代理服务器是其中一种选择。

我可以自己托管Capgo吗?

标题:我可以自己托管Capgo吗?

是的。企业版支持在您自己的基础设施中运行的许可证自托管Capgo部署,需要在您的基础设施中运行更新后端。请参阅 自托管更新器 了解部署模型和端点。

code推送是否需要互联网才能工作?

标题:code推送是否需要互联网才能工作?

是的。可以想象一下,分发更新的服务器可以独立于公共互联网,但某种形式的网络连接是必需的,以便将更新传输到设备。

How is Capgo affected by lack of network connectivity?

标题:如何在没有网络连接的情况下影响Capgo?

Capgo 升级器(在您使用Capgo构建应用程序时,会将其包含在应用程序中)旨在对网络连接问题具有抵抗力。

在默认的更新行为中,当应用程序启动时,它会警告Capgo 升级器,后者会在单独的线程中发出网络请求到Capgo 服务器并要求更新。我们故意使用单独的线程,以避免阻塞应用程序可能正在执行的其他任务。如果网络请求失败或超时,升级器将简单地尝试下次应用程序启动时再次检查。

Capgo 命令行工具(例如 npx @capgo/cli@latest bundle upload)需要网络连接才能正常工作。如果您正在使用Capgo 分发应用程序,请确保您的CI系统具有网络连接。

如果用户长时间未更新并错过更新会发生什么?

标题:如果用户长时间未更新并错过更新会发生什么?

我们的实现始终发送一个针对设备的更新,设备始终会更新到最新版本。因此,如果用户长时间未更新,他们将会错过中间的更新。

更新服务器可以根据您的应用程序需要支持响应下一个增量版本或最新版本。

Capgo 与 Capacitor 有什么关系?

关于 Capgo 与 Capacitor 的问题

Capgo 是为 Capacitor 提供的插件,添加了 code 推送功能。Capgo 不是 Capacitor 的替代品。您可以继续使用您已经熟悉的 Capacitor 工具。

我们跟踪 Capacitor 的最新稳定版本,并更新我们的 code 推送插件,使其与其兼容。

默认情况下,Capgo 更新器在应用程序启动时检查更新。它在后台线程运行,不会阻塞 UI 线程。任何更新都会在用户使用应用程序时安装,并在下一次应用程序重启时应用。

也可以通过 Capgo 更新器手动运行它 @capgo/capacitor-updater __CAPGO_KEEP_0__ 包,通过它可以在任何时间触发更新,包括通过推送通知。

Capgo Capgo 升级器是这样设计的:即使网络不可用,服务器宕机或无法访问,应用程序也会正常运行。您可以从我们的服务器删除更新,但您的客户端仍会正常运行。

我们添加了回滚补丁的功能。最简单的方法是简单地将之前的包附加到您的频道中来撤销。

我需要保留我的 app_id 密钥吗?

题目:我需要保留我的 app_id 密钥吗?

不。您的 app_id 是包含在您的应用程序中的,安全地可以公开。您可以将其添加到版本控制(甚至公开)中,不用担心有人访问它。 app_id 如果有人知道您的 app_id,可以从 Capgo 服务器获取最新版本的应用程序,但他们无法推送应用程序更新或访问您的 Capgo 帐户。

Capgo 服务器收到哪些信息? app_id can fetch the latest version of your app from Capgo servers, but they cannot push updates to your app or access any other aspect of your Capgo account.

What information is sent to Capgo servers?

Section titled “What information is sent to Capgo servers?”

完整的数据清单、API端点行为和隐私控制都在 遵从性.

设置 statsUrl: '' 来禁用明确的更新统计报告。您还可以将 statsUrl 发送到您控制的代理或端点;参见 在自托管基础设施中处理统计信息. Update checks still need an app-scoped device identifier so Capgo can select the correct update and measure monthly active devices.

可以选择正确的更新并衡量每月活跃设备。 子处理器列表

Can I use Capgo for HIPAA-sensitive apps?

关于是否可以使用 Capgo 为 HIPAA敏感应用程序?

是的,但您的合规负责人需要选择正确的部署模型。 Capgo 云目前尚未作为 HIPAA 合规的托管统计处理器呈现。 默认情况下,更新器数据是设备范围的,并且与已知应用程序用户无关,许多团队使用该模型成功。

对于更严格的审查,您可以地理定位插件流量,设置 statsUrl 到一个空字符串,仅托管统计端点,或者使用许可的自主托管。 不要使用 CapacitorUpdater.setCustomId(...) 与电子邮件、用户 ID、患者 ID、员工 ID或任何将更新器遥测映射回个人值。

查看 HIPAA 合规 获取完整的技术设置和统计数据禁用时的可观察性权衡。

是否可以在欧洲保留 Capgo 实时更新数据?

关于是否可以在欧洲保留 Capgo 实时更新数据?

Yes. Apps that need EU data residency for Capgo Cloud plugin traffic can set the updater endpoints to the EU host:

  • updateUrl: https://plugin.eu.capgo.app/updates
  • statsUrl: https://plugin.eu.capgo.app/stats
  • channelUrl: https://plugin.eu.capgo.app/channel_self

使用所有三个EU URL一起,以便更新检查、统计和频道自我赋值使用相同的区域数据路径。因为这些值存储在 capacitor.config.ts生产移动应用需要native发布才能使现有安装使用新端点

查看 数据位置 了解具体的Capacitor和Electron示例。

Capgo支持哪些平台?

Capgo支持哪些平台?

目前,Capgo支持Android、iOS和Electron。所有平台均已生产就绪。

使用Capgo进行iOS、Android或Electron的决策可以独立进行。您可以为Android和App Store构建的ipa设置您的频道策略,或Electron频道,根据需要。

如果您需要支持桌面或嵌入式目标,Capgo可以(相对容易地)支持这些目标。如果这些对您很重要,请告知我们。

Capgo如何与Play Testing Tracks或Apple TestFlight交互?

How does Capgo interact with Play Testing Tracks or Apple TestFlight?

每个应用商店都有自己的机制来将应用分发给受限用户组(例如“内部测试”、“封闭测试”等)。这些都是将用户分段并将特定版本的应用分发给每个用户组的机制。

遗憾的是,这些机制并不是所有的机制都允许第三方检测应用是否安装在任何特定的测试轨道或通过TestFlight。因此,我们无法可靠地获得这些组合的可见性,并且无法可靠地根据这些组来控制Capgo补丁的访问。 https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i

如果您想根据组来控制Capgo包的可用性,那么有4种潜在的选项:

  1. 使用每组的单独频道。这是最直接的方法,但需要您管理多个频道。您可能已经有一个开发频道和一个生产频道,具有不同的可用性。您可以更新您的开发频道、验证它,然后单独更新您的生产频道。我们建议使用分支/标签来帮助跟踪每个发布相关的源代码。
  2. 根据自己的选项,跟踪用户,禁用自动更新,并仅为特定用户触发更新。 @capgo/capacitor-updater 通过
  3. Capgo
  4. 允许在设备级别创建自己的选项机制(类似于测试轨道或测试飞行,只不限于平台)。这使得您的QA团队可以在他们被推广到公众之前,优先使用捆绑包。 使用 逐步发布 --rollout-percentage-bps 向一个随机、粘性子集的频道传递候选捆绑包。从0-100%设置滚动,或者使用

以0.01%的增量;配置缓存持续时间从60秒到365天,并可选自动暂停策略。这不选择一个命名设备组。

账单

您可以在您的控制台中随时升级或降级您的计划: https://console.capgo.app/settings/organization/plans

我的账单周期何时重置?

账单周期重置标题

Billing periods are reset automatically every month on the month you first subscribed to Capgo. For example, if you subscribed on the 15th of the month, your billing period will reset on the 15th of every month.

如何取消我的订阅?

取消订阅标题

您可以在您的控制台中随时取消您的订阅: https://console.capgo.app/settings/organization/plans

是否可以预付一年费用?

关于是否可以预付一年费用?

是的,您可以在您的组织计划设置中选择年度计费。 组织计划设置.

区域复制是否会增加存储或带宽?

区域复制是否会增加存储或带宽?

区域复制不会增加存储或带宽。

没有。无论哪个区域提供服务,Capgo 的包裹只计算一次存储。Capgo 的带宽基于设备下载,未从边缘缓存中服务的下载才会计入Capgo 的带宽使用量。

企业版SLA包含什么内容?

企业版SLA包含什么内容?

企业版包括99.9%的月度可用性承诺,用于生产平台。如果承诺未能实现,服务补偿计划将根据月度可用性从10%到30%进行调整。初期支持响应目标为P1:24小时/7天/365天;P2:两小时;P3:一天;P4:两天。阅读 企业版SLA 查看完整条款。

统计和分析

统计和分析

您的仪表板统计数据每晚更新UTC时间。 统计数据是从不同的 月度活跃用户 设备 ID 在过去的 30 天内始终有效。

设备 ID 是如何生成的?

设备 ID 是如何生成的?

设备 ID 在设备上第一次运行时生成,用于去重每个设备的安装和根据已安装的用户(例如每月活跃用户)而不是总数或总数的补丁来为我们收费。

MAU 比安装数量更好的解决方案来定价 Capgo,因为它更准确地反映了每个设备的实际成本 Capgo。

设备 ID 持久性:

  • iOS从 v7.25.0 开始,设备 ID 在 Keychain 中存储,通过正常重装系统可以持久保存。
  • Android从 v7.50.1 开始(或 v5.50.1+/v6.50.1+ 在这些发布线上),设备 ID 只有在 Android 备份/还原保留应用偏好时才会恢复。
  • Electron:设备ID存储在安全存储中。
  • Android注意事项:禁用备份、排除相关偏好或清除应用数据将生成一个新的设备ID。Android v7.25.0至v7.50.0版本可以在备份启用时重新安装后生成一个新的设备ID。

设备ID是应用范围内的,支持实时更新和MAU去重;它不是广告或跨应用跟踪标识符。

设备ID在应用通过Capgo更新器或统计端点检查入时列出。设备不需要安装补丁才能在设备列表中出现。

为什么我的设备号与MAU不一致?

标题:为什么我的设备号与MAU不一致?

设备列表和MAU基于不同的信号。

设备列表显示每个设备的最新已知元数据,例如设备ID、平台、插件版本、OS版本、原生版本、通道、安装的包和可用请求国家。请求国家是从Cloudflare处理的请求中接收的最新有效的两位code,而不是GPS或应用提供的位置。没有有效国家的请求不会清除最后有效的值。Capgo更新此元数据时应用检查入,但反复检查入并报告相同元数据的请求可能不会改变行或其最后更新时间。

MAU统计会根据计费时间窗口统计设备的活动次数。即使设备元数据保持不变,设备的活动次数也可能会增加,因此设备数量和MAU可能会不同。

如何为不同平台设置更新?

关于如何为不同平台设置更新?

您可以为每个平台创建一个频道,并在每个频道中禁用平台特定的更新。

在iOS频道中禁用Android更新,在Android频道中禁用iOS更新。

然后将每个频道的包上传到每个频道中,以便为每个平台设置不同的更新。

如果您需要为两个平台设置相同的更新,可以将一个包链接到多个频道。无需重复上传包。

继续阅读FAQ

继续阅读FAQ

如果您正在使用 FAQ 为了计划实时更新的发布,连接它 Capgo 实时更新 为了产品工作流程在 Capgo 实时更新中 概览 为了实现细节在概览中 功能 为了实现细节在功能中 更新行为 为了实现细节在更新行为中, 更新类型 为了实现细节在更新类型中。