营销型企业网站建设的流程是,公司网站开发人员离职后修改公司网站,易支付对接WordPress,宜城网站建设响应 Native Client SDK API 参考02/19/2020本文内容CodePush 插件由以下两个组件组成#xff1a;可以导入/要求的 JavaScript 模块#xff0c;并允许应用在运行时与服务交互 (例如#xff0c;检查更新、检查有关当前正在运行的应用更新) 的元数据。本机 API (目标-C 和 Jav…响应 Native Client SDK API 参考02/19/2020本文内容CodePush 插件由以下两个组件组成可以导入/要求的 JavaScript 模块并允许应用在运行时与服务交互 (例如检查更新、检查有关当前正在运行的应用更新) 的元数据。本机 API (目标-C 和 Java) 它允许响应本机应用主机使用正确的 JS 包位置自行启动。以下各节将详细介绍这些 Api 的形状和行为JavaScript API 参考如果需要 react-native-code-push module 对象除了提供根级别 组件修饰器外还提供以下顶级方法allowRestart Reallows 以编程方式重启作为正在安装的更新的结果并且(可选)会在不允许重新启动时如果等待更新已尝试重启应用则会立即重新启动应用。 此方法是一种高级 API只在应用通过方法显式禁止重新启动时才是必需的 disallowRestart 。checkForUpdate询问 CodePush 服务配置的应用部署是否有可用的更新。disallowRestart在安装 CodePush 更新后暂时不允许任何编程重启。 此方法是一种高级 API在应用中的组件 ((例如载入过程) 需要确保在其生存期内不会发生最终用户中断时此方法非常有用。getCurrentPackage检索有关当前安装的 (更新的元数据如说明、安装时间、大小) 。备注在 v1.10.3-beta CodePush 模块的 getCurrentPackage 中已弃用 * 的支持 getUpdateMetadata 。getUpdateMetadata检索安装的更新的元数据如说明、必需) (。notifyAppReady通知 CodePush 运行时已安装的更新被认为是成功的。 如果要手动检查和安装未 (同步方法来处理所有更新) 必须调用此方法; 否则CodePush 将更新视为失败在应用下次重启时回滚到以前的版本。restartApp立即重启应用。 如果更新挂起它将立即显示给最终用户。 否则调用此方法的行为与最终用户终止和重启进程的行为相同。sync允许检查更新、下载并安装更新所有操作都通过一次调用完成。 除非需要自定义 UI 或行为否则我们建议大多数开发人员在将 CodePush 集成到其应用中时使用此方法codePush// Wrapper functioncodePush(rootComponent: React.Component): React.Component;codePush(options: CodePushOptions)(rootComponent: React.Component): React.Component;// Decorator; Requires ES7 supportcodePushcodePush(options: CodePushOptions)用于将 React 组件包装在较高顺序React 组件内该组件知道如何在装载应用时同步应用的 JavaScript 捆绑包和映像资产。 在内部高序组件在其生命周期句柄内调用 该句柄运行更新检查下载更新(如果存在)并安装 sync componentDidMount 更新。此修饰器支持自定义其行为以便轻松启用具有不同要求的应用。 下面是一些使用它的方法示例 (选择一种方法甚至可以使用组合) **应用上的无提示同步 (**最简单的默认行为) 。 应用将自动下载可用更新并应用它们下次重启 (如 OS 或最终用户将其终止或者设备已重启) 。 这样最终用户的整个更新体验都是无提示的因为他们看不到任何更新提示或合成应用重启。// Fully silent update that keeps the app in// sync with the server, without ever// interrupting the end userclass MyApp extends Component {}MyApp  codePush(MyApp);每次应用恢复 时无提示同步。 与 1 相同只不过我们会检查更新如果每次应用在后台后返回到前台时存在更新则应用更新。// Sync for updates every time the app resumes.class MyApp extends Component {}MyApp  codePush({ checkFrequency: codePush.CheckFrequency.ON_APP_RESUME, installMode: codePush.InstallMode.ON_NEXT_RESUME })(MyApp);交互式。 当更新可用时在下载之前提示最终用户提供权限然后立即应用更新。 如果更新是使用标志发布的 mandatory 则仍将通知最终用户有关更新的信息但不能选择忽略它。// Active update that lets the end user know// about each update, and displays it to them// immediately after downloading itclass MyApp extends Component {}MyApp  codePush({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE })(MyApp);日志/显示进度。 当应用程序与服务器同步以进行更新时请使用 codePushStatusDidChange 或 codePushDownloadDidProgress 事件挂钩来注销此进程的不同阶段甚至向用户显示进度栏。// Make use of the event hooks to keep track of// the different stages of the sync process.class MyApp extends Component {codePushStatusDidChange(status) {switch(status) {case codePush.SyncStatus.CHECKING_FOR_UPDATE:console.log(Checking for updates.);break;case codePush.SyncStatus.DOWNLOADING_PACKAGE:console.log(Downloading package.);break;case codePush.SyncStatus.INSTALLING_UPDATE:console.log(Installing update.);break;case codePush.SyncStatus.UP_TO_DATE:console.log(Up-to-date.);break;case codePush.SyncStatus.UPDATE_INSTALLED:console.log(Update installed.);break;}}codePushDownloadDidProgress(progress) {console.log(progress.receivedBytes   of   progress.totalBytes   received.);}}MyApp  codePush(MyApp);CodePushOptionscodePush修饰器接受 options 对象可用于自定义上面提到的默认行为的众多方面checkFrequency (codePush. checkFrequency) -指定要检查更新的时间。 默认为 codePush.CheckFrequency.ON_APP_START。 CheckFrequency有关可用选项及其功能的说明请参阅枚举引用。deploymentKey (字符串) -指定要查询更新的部署密钥。 默认情况下此值派生自 info.plist 文件 (iOS) 和 MainActivity 文件 (Android) 但使用此选项可以在需要动态使用不同部署的情况下从脚本端覆盖它。installMode (codePush. installMode) -指定你希望 (未标记为强制) 的更新安装可选更新。 默认为 codePush.InstallMode.ON_NEXT_RESTART。 InstallMode有关可用选项及其功能的说明请参阅枚举引用。mandatoryInstallMode (codePush. InstallMode) -指定要安装更新(标记为必需)的时间。 默认为 codePush.InstallMode.IMMEDIATE。 InstallMode有关可用选项及其功能的说明请参阅枚举引用。minimumBackgroundDuration (号) -指定在重新启动应用之前应用在后台的最小秒数。 此属性仅适用于使用 或 安装的更新并且可用于在最终用户的前面更快获取更新而不会太 InstallMode.ON_NEXT_RESUME InstallMode.ON_NEXT_SUSPEND 模糊。 默认为 它会在恢复后立即应用更新或者除非应用暂停足够长而无关紧要但只要它在后台 0 运行。updateDialog (UpdateDialogOptions) - 一个options对象用于确定在更新可用时是否应该向最终用户显示确认对话框如果是则使用哪些字符串。 默认为 null 这将禁用对话。 将此值设置为任何值将启用具有默认字符串的对话并且将对象传递给此参数允许启用对话以及重写一 true 个或多个默认字符串。 在分布式应用中启用App Store请参阅 此注释。以下列表表示可用选项及其默认值appendReleaseDescription (布尔 值) - 指示是否要将可用发布的说明追加到向最终用户显示的通知消息中。 默认为 false。descriptionPrefix (字符串) - 指示在向最终用户显示更新通知时要以作为发布说明前缀的字符串(如果有)。 默认为  Description: mandatoryContinueButtonLabel (字符串) - 用于最终用户必须按下的按钮的文本以安装强制更新。 默认为 Continue。mandatoryUpdateMessage (字符串) - 将更新指定为必需时用作更新通知正文的文本。 默认为 An update is available that must be installed.。optionalIgnoreButtonLabel (字符串) - 用于最终用户可以按下的按钮的文本以忽略可用的可选更新。 默认为 Ignore。optionalInstallButtonLabel (字符串) - 用于最终用户可以按下以安装可选更新的按钮的文本。 默认为 Install。optionalUpdateMessage (字符串) -更新为可选时用作更新通知的正文的文本。 默认为 An update is available. Would you like to install it?。标题 (字符串) -用作向最终用户显示的更新通知的标头的文本。 默认为 Update available。codePushStatusDidChange (事件挂钩)当同步过程在整个更新过程中从一个阶段移到另一个阶段时调用。 使用表示当前状态的状态代码调用事件挂钩可以是任何 SyncStatus 值。codePushDownloadDidProgress (事件挂钩)从 CodePush 服务器下载可用的更新时定期调用。 使用对象调用方法 DownloadProgress 该对象包含以下两个属性totalBytes (Number) -预期要为此更新接收的总字节数 (这是一组文件的大小该大小从以前的版本) 进行了更改。接收 (数字) -到目前为止下载的字节数可用于跟踪下载进度。codePush. allowRestartcodePush.allowRestart(): void;Reallows 编程重启发生由于之前对的调用将被拒绝 disallowRestart 。 如果 disallowRestart 第一次没有调用则调用此方法将导致不会操作。如果 CodePush 更新当前处于挂起状态而该更新尝试重新启动应用 (例如使用 InstallMode.IMMEDIATE) 但由于调用而被阻止 disallowRestart 则调用 allowRestart 将导致立即重启。 此重启允许尽快应用更新而不会在关键工作流期间中断最终用户 (例如) 的载入过程。例如如果在 allowRestart 调用后出现的disallowRestart 文档中有一种情况发生调用会立即触发立即重新启动 disallowRestart 。 但是 allowRestart 如果满足以下几点则调用将不会触发重新启动自上次调用 以来未安装 CodePush 更新因此也无需 disallowRestart 重启。当前有一个挂起的 CodePush 更新但它是通过 安装的因此不需要以编程 InstallMode.ON_NEXT_RESTART 方式重启。当前有一个挂起的 CodePush 更新但它是通过 安装的并且应用尚未置于后台因此无需以编程方式 InstallMode.ON_NEXT_RESUME 重启。自上次 restartApp 调用 以来未调用 disallowRestart 任何 。此行为可确保不会由于调用 而触发重启除非在不允许的时段内显式请求 allowRestart 了重启。 这样 类似于调用 只不过前者仅在当前挂起的更新想要重启时触发重启但后者在更新挂起时 allowRestart restartApp(true) 将重新启动。codePush.checkForUpdatecodePush.checkForUpdate(deploymentKey: String  null, handleBinaryVersionMismatchCallback: (update: RemotePackage)  void): Promise;查询 CodePush 服务以查看配置的应用部署是否具有可用的更新。 默认情况下它将使用 Info.plist 文件 (iOS) 或 MainActivity.java 文件 (Android) 中配置的部署密钥但可以通过可选参数指定值来替代该密钥。 deploymentKey 当你想要将用户动态重定向到特定部署时(例如允许通过花子或用户设置开关提前访问)这非常有用。第二个 handleBinaryVersionMismatchCallback 可选参数是可选回调函数可用于在存在任何二进制更新时通知用户。例如假设有一个用例其中当前安装的二进制版本为 1.0.1其标签 (代码推送标签) v1。 更高版本的本机代码在开发周期中已更改二进制版本已更新为 1.0.2。 触发代码图更新检查时我们将忽略二进制版本不匹配的更新 (因为更新不面向当前安装的应用版本的二进制) 。 在这种情况下已安装的应用 (1.0.1) 将忽略更新目标版本1.0.2。 可以使用 handleBinaryVersionMismatchCallback 提供挂钩来处理这种情况。重要如果要在开发 iOS 应用程序时使用此回调中的警报则请务必小心因为 应用商店 审核过程应用不得强制用户对应用进行评级、查看应用、下载其他应用或其他类似操作以便访问功能、内容或应用的使用。此方法返回一个 Promise 它解析为以下两个可能值之一null 如果没有可用的更新则为。 以下方案中可能会发生这种情况配置的部署不包含任何版本因此不会更新任何内容。在配置的部署中最新版本的目标是与当前运行的二进制版本不同 (旧版本或较新) 。当前正在运行的应用已从配置的部署中获得最新版本因此不再需要它。配置的部署中的最新版本当前已标记为禁用因此不允许下载。配置的部署中的最新版本处于 活动推出 状态并且请求的设备不在符合资格的用户的百分比内。一个 RemotePackage 实例表示可以检查或以后下载的可用更新。示例用法codePush.checkForUpdate().then((update)  {if (!update) {console.log(The app is up to date!);} else {console.log(An update is available! Should we download it?);}});codePush. disallowRestartcodePush.disallowRestart(): void;由于以下任一情况暂时不允许编程重启发生使用安装 CodePush 更新 InstallMode.IMMEDIATE使用安装 CodePush 更新 InstallMode.ON_NEXT_RESUME 并从后台恢复应用 (可以选择通过属性进行限制 minimumBackgroundDuration)restartApp调用了方法备注步骤1和步骤2可以通过调用来有效地工作 restartApp 因此你可以将 disallowRestart 其视为阻止对的任何调用 restartApp 无论你的应用程序是直接还是间接调用它。调用此方法后仍允许对 的任何调用检查更新、下载并安装更新但重启应用的尝试将排队直到 sync allowRestart 调用 。 这样一来将捕获重启请求并且只要希望允许重启请求发生就可以刷新该请求。这是一个高级 API主要在应用 (中的单个组件(如载入过程) )需要确保最终用户在其生存期内不会发生中断同时继续允许应用以自己的步调保持与 CodePush 服务器同步以及使用任何合适的安装模式时非常有用。 这样做的好处是允许应用尽快发现和下载可用的更新同时防止关键最终用户体验期间出现任何中断。作为替代方法还可以在调用 ((永远不会尝试以编程方式重启应用) )时使用 然后在应用中的安全点显式调用以这样做。 InstallMode.ON_NEXT_RESTART sync restartApp disallowRestart 当与 CodePush 服务器同步的代码与想要强制实施无重启策略的代码/组件分开时提供了一种替代方法。示例用法class OnboardingProcess extends Component {...componentWillMount() {// Ensure that any CodePush updates that are// synchronized in the background cant trigger// a restart while this component is mounted.codePush.disallowRestart();}componentWillUnmount() {// Reallow restarts, and optionally trigger// a restart if one was currently pending.codePush.allowRestart();}...}codePush.getCurrentPackage备注自 CodePush 模块起此方法被视为 v1.10.3-beta 已弃用。 如果要在 (或更高版本) 我们建议改为使用 因为它 codePush.getUpdateMetadata 的行为更具可预测性。codePush.getCurrentPackage(): Promise;检索有关当前安装的包的元数据 (说明、安装时间) 。 对于显示新增功能等方案这非常有用 应用更新后对话框或检查是否有等待通过恢复或重启应用挂起的更新。此方法返回 Promise 它解析为两个可能值之一null 如果应用当前从二进制文件而不是 CodePush 更新运行 JS 捆绑包则 。 这种情况在下列情况下发生最终用户已安装应用程序二进制文件但尚未安装 CodePush 更新最终用户已安装二进制 (的更新例如从应用商店) 它清除掉旧的 CodePush 更新并在二进制文件中优先返回到 JS 二进制。一个 LocalPackage 实例表示当前正在运行的 CodePush 更新的元数据。示例用法codePush.getCurrentPackage().then((update)  {// If the current app session represents the first time// this update has run, and it had a description provided// with it upon release, lets show it to the end userif (update.isFirstRun  update.description) {// Display a whats new? modal}});codePush. getUpdateMetadatacodePush.getUpdateMetadata(updateState: UpdateState  UpdateState.RUNNING): Promise;检索已安装的更新的元数据 (如说明、必需) 其状态与指定 updateState 参数匹配。 这对于显示 新增功能 之类的方案非常有用。 在应用更新后或检查是否有等待通过恢复或重新启动应用的挂起更新。 有关可能的更新状态及其表示内容的详细信息请参阅 UpdateState 参考。此方法返回一个 Promise 它解析为以下两个可能值之一null 如果当前不存在具有指定状态的更新。 在下列情况下会发生这种情况最终用户尚未安装任何 CodePush 的更新这就是没有元数据可用于任何更新的原因无论你何时指定为 updateState 参数。最终用户已安装二进制 (的更新例如从应用商店) 它清除掉旧的 CodePush 更新并在二进制文件中优先返回到 JS 二进制。 这会表现出与 #1 相同的行为updateState参数设置为 UpdateState.RUNNING 但应用当前未运行 CodePush 更新。 可能有一个挂起的更新但该应用尚未重新启动才能使其处于活动状态。updateState参数设置为 UpdateState.PENDING 但应用没有任何当前挂起的更新。一个 LocalPackage 实例表示当前请求的 CodePush 更新的元数据 (正在运行或挂起的) 。示例用法// Check if theres currently a CodePush update running, and if// so, register it with the HockeyApp SDK (https://github.com/slowpath/react-native-hockeyapp)// so that crash reports will correctly display the JS bundle version the user was running.codePush.getUpdateMetadata().then((update)  {if (update) {hockeyApp.addMetadata({ CodePushRelease: update.label });}});// Check to see if theres still an update pending.codePush.getUpdateMetadata(UpdateState.PENDING).then((update)  {if (update) {// Theres a pending update, do we want to force a restart?}});codePush.notifyAppReadycodePush.notifyAppReady(): Promise;通知 CodePush 运行时新安装的更新应被视为成功因此不需要自动客户端回滚。 在更新的捆绑包的代码中的某一位置调用此函数是必需的。 否则当应用下次重新启动时CodePush 运行时将假定已安装的更新失败并回滚到以前的版本。 存在此行为有助于确保最终用户不会被损坏的更新阻止。如果使用的是 函数并且对应用启动执行更新检查则无需手动调用 因为 sync notifyAppReady sync 会调用它。 存在此行为是因为假设在应用中调用 时它表示成功 sync 启动的良好近似值。备注此方法也别名为 notifyApplicationReady (用于实现向后) 。codePush.restartAppcodePush.restartApp(onlyIfUpdateIsPending: Boolean  false): void;立即重启应用。 如果向 参数提供了真实值则应用将仅在实际存在等待应用的挂起更新 onlyIfUpdateIsPending 时重启。此方法适用于高级方案在满足以下条件时主要用于调用 或 方法时应用将指定 或 ON_NEXT_RESTART ON_NEXT_RESUME 的 sync 安装模式 LocalPackage.install 值。 在最终用户或 OS (重启应用或恢复应用之前) 不会应用更新因此不会立即向最终用户显示更新。你有一个特定于应用的用户事件 (例如最终用户导航回应用的主页路由) 该路由允许以非介入方式应用更新并可能早于等到下次重启或恢复时向最终用户获取更新。codePush.synccodePush.sync(options: Object, syncStatusChangeCallback: function(syncStatus: Number), downloadProgressCallback: function(progress: DownloadProgress), handleBinaryVersionMismatchCallback: function(update: RemotePackage)): Promise;将应用的 JavaScript 捆绑包和映像资产与最新版本同步到配置的部署。 与 checkForUpdate 方法不同后者检查是否存在更新并让你控制接下来要做的事情 sync 为你处理更新检查、下载和安装体验。此方法为两个不同的 (提供支持但可自定义) 模式 以轻松地启用具有不同要求的应用无提示模式 (默认行为) 自动下载可用更新并在应用程序下次重新启动时应用它们 (例如OS 或最终用户取消了该操作或者设备已重新启动) 。 这样一来整个更新体验对最终用户是 无提示 的因为他们看不到任何更新提示或 综合 应用重启。活动模式当更新可用时将在下载之前提示最终用户提供权限然后立即应用更新。 如果更新是使用标志发布的 mandatory 则仍将通知最终用户有关更新的信息但不能选择忽略它。示例用法// Fully silent update that keeps the app in// sync with the server, without ever// interrupting the end usercodePush.sync();// Active update, which lets the end user know// about each update, and displays it to them// immediately after downloading itcodePush.sync({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE });提示如果要确定是基于最终用户的设备电池电量级别、网络状况等来检查还是下载可用的更新请将对的调用包装 sync 在一个条件下以确保仅在需要时进行调用。SyncOptions虽然此 sync 方法会尝试使用少量的配置轻松执行无提示和活动更新但它会接受 options 对象该对象允许您自定义上述默认行为的许多方面。 可用选项与 CodePushOptions相同但 checkFrequency 选项除外deploymentKey (字符串) -请参阅 CodePushOptions 。installMode (codePush. installMode) -请参阅 CodePushOptions 。mandatoryInstallMode (codePush. InstallMode) -请参阅 CodePushOptions 。minimumBackgroundDuration (号) -请参阅 CodePushOptions 。updateDialog (UpdateDialogOptions) - 请参阅 CodePushOptions 。示例用法// Use a different deployment key for this// specific call, instead of the one configured// in the Info.plist filecodePush.sync({ deploymentKey: KEY });// Download the update silently, but install it on// the next resume, as long as at least 5 minutes// has passed since the app was put into the background.codePush.sync({ installMode: codePush.InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 60 * 5 });// Download the update silently, and install optional updates// on the next restart, but install mandatory updates on the next resume.codePush.sync({ mandatoryInstallMode: codePush.InstallMode.ON_NEXT_RESUME });// Changing the title displayed in the// confirmation dialog of an active updatecodePush.sync({ updateDialog: { title: An update is available! } });// Displaying an update prompt which includes the// description for the CodePush releasecodePush.sync({updateDialog: {appendReleaseDescription: true,descriptionPrefix: \n\nChange log:\n},installMode: codePush.InstallMode.IMMEDIATE});除了选项之外 方法还接受多个可选函数参数这些参数允许你订阅管道的生命周期以便根据需要显示其他 UI (例如检查更新模式或下载进度模式 sync sync) syncStatusChangedCallback ( (syncStatus 数字)  void) - 当同步过程从一个阶段移到整个更新过程中的另一个阶段时调用。 使用状态代码调用 方法该代码表示当前状态可以是任何 SyncStatus 值。downloadProgressCallback ( (进度DownloadProgress)  void) - 从 CodePush 服务器下载可用更新时定期调用。 使用 对象调用 方法 DownloadProgress 该对象包含以下两个属性totalBytes (Number) - 此更新 (预期接收的总字节数这是一组文件的大小与以前的版本相比) 。receivedBytes (Number) - 到目前为止下载的字节数可用于跟踪下载进度。handleBinaryVersionMismatchCallback ( (updateRemotePackage)  void) - 当有任何可用的二进制更新时调用。 使用 对象调用 RemotePackage 方法。 有关更多详细信息 请参阅 codePush.checkForUpdate 部分。示例用法// Prompt the user when an update is available// and then display a downloading modalcodePush.sync({ updateDialog: true },(status)  {switch (status) {case codePush.SyncStatus.DOWNLOADING_PACKAGE:// Show downloading modalbreak;case codePush.SyncStatus.INSTALLING_UPDATE:// Hide downloading modalbreak;}},({ receivedBytes, totalBytes, })  {/* Update download modal progress */});此方法返回 Promise 它解析为 SyncStatus 指示调用成功 sync 原因的代码。 此代码可以是以下值之 SyncStatus 一codePush.SyncStatus.UP_TO_DATE ( 4) - 应用是 CodePush 服务器最新的。codePush.SyncStatus.UPDATE_IGNORED ( 5) - 应用具有最终用户选择忽略的可选更新。 (这仅适用于 updateDialog 使用)codePush.SyncStatus.UPDATE_INSTALLED (6) -已安装更新并将在该函数返回后立即运行 syncStatusChangedCallback 或在下次应用恢复/重新启动时运行具体取决于 InstallMode 中指定的 SyncOptions 。codePush.SyncStatus.SYNC_IN_PROGRESS (7) -正在 sync 运行的操作阻止执行当前调用。sync可以在要检查更新的任何位置调用此方法。 这可能是 componentWillMount 根组件的生命周期事件、组件的 onPress 处理程序、 定期计时器的回调或者其他任何对你的需求都有意义的。 与 checkForUpdate 方法类似它执行网络请求来检查后台更新因此不会影响 UI 线程或 JavaScript 线程的响应能力。包对象checkForUpdate和 getUpdateMetadata 方法返回 Promise 对象解析后提供对 package 对象的访问。 包表示你的代码更新和任何额外的元数据 (如 description必需 ) 。 CodePush API 区分以下类型的包LocalPackage表示已运行的已下载更新或者已安装并且正在等待应用重启。RemotePackage表示尚未下载的 CodePush 服务器上的可用更新。LocalPackage包含有关已在本地下载或已安装的更新的详细信息。 您可以通过调用模块级方法获取对此对象的实例的引用或通过调用该方法返回的承诺的值获取对此对象的实例的引用 getUpdateMetadata RemotePackage.download 。属性appVersion此更新所依赖的应用二进制版本。 这是在 appStoreVersion 调用 CLI 的命令时通过参数指定的值 release 。 (字符串)deploymentKey 最初用于下载此更新的部署密钥。 (字符串)description 更新的说明。 此值与发布更新时在 CLI 中指定的值相同。 (字符串)failedInstall 指示此更新以前是否已安装但已回滚。 方法将自动忽略以前失败的更新因此如果使用 则只需 sync 担心此属性 checkForUpdate 。 (布尔值)isFirstRun 指示这是否是安装后首次运行更新。 这可用于确定是否要显示新增功能 安装更新后向最终用户提供 UI。 (布尔值)isMandatory 指示更新是否被视为必需。 这是发布更新时在 CLI 中指定的值。 (布尔值)isPending 指示此更新是否位于挂起状态。 如果为 则意味着已下载并安装更新但应用需要重启才能应用这就是其更改当前对最终用户不可见 true 的原因。 (布尔值)labelCodePush 服务器自动为更新提供的内部标签例如 v5 。 此值唯一标识其部署中的更新。 (字符串)packageHash更新的 SHA 哈希值。 (字符串)packageSize包含在更新中的代码的大小(以字节为单位)。 (号)方法install (installMode codePush. installMode  codePush.InstallMode.ON_NEXT_RESTARTminimumBackgroundDuration  0) 承诺  void 通过将更新保存到运行时期望在其上查找最新版本应用的磁盘位置来安装更新。 installMode参数控制向最终用户显示更改的时间。 默认值为等待直到下一个应用重新启动才能显示更改但你可以参考 InstallMode 枚举参考来了解可用选项的说明及其功能。 如果将 installMode 参数设置为 InstallMode.ON_NEXT_RESUME 则 minimumBackgroundDuration 参数使你能够控制在恢复安装之后强制安装之前应用程序在后台中必须有多长时间。RemotePackage包含有关可从 CodePush 服务器下载的更新的详细信息。 当更新可用时通过调用方法来获取对此对象的实例的引用 checkForUpdate 。 如果你使用的是 sync API则无需担心 RemotePackage 因为它会自动为你处理下载和安装过程。属性RemotePackage继承所有与相同的属性 LocalPackage 但包含一个其他属性downloadUrl包可用于下载的 URL。 此属性只是高级使用所必需的因为该 download 方法将自动为你获取更新的获取。 (字符串)方法下载 (downloadProgressCallback Function) 承诺 下载 CodePush 服务中的可用更新。 如果 downloadProgressCallback 指定了则会定期使用 DownloadProgress 对象 ({ totalBytes: Number, receivedBytes: Number }) 报告下载进度直到完成。 返回用解析的承诺 LocalPackage 。枚举CodePush API 包含以下枚举可用于自定义更新体验InstallMode此枚举指定何时希望实际应用已安装的更新并可以传递给 sync 或 LocalPackage.install 方法。 它包含以下值codePush.InstallMode.IMMEDIATE (0) - 指示要安装更新并立即重启应用。 此值适用于调试方案以及向用户显示更新提示时因为他们预期在接受安装后立即看到更改。 此外此模式可用于强制执行强制更新因为它消除了更新安装与最终用户下次重启或恢复应用之间的可能不需要的延迟。codePush.InstallMode.ON_NEXT_RESTART ( 1) - 指示要安装更新但不强制重启应用。 当应用因操作系统或最终用户 (而自然重启时) 无缝选取更新。 执行无提示更新时此值是合适的因为如果应用突然突然重启可能会给最终用户造成中断。 他们甚至不会意识到更新已下载。 这是用于 和 方法的默认 sync LocalPackage.install 模式。codePush.InstallMode.ON_NEXT_RESUME ( 2) - 指示要安装更新但不希望在最终用户下次从后台恢复应用之前重启应用。 这样你无需中断其当前会话但可以比等待下一次自然重启更快获得更新。 此值适用于以非入侵方式在恢复时应用的无提示安装。codePush.InstallMode.ON_NEXT_SUSPEND (3) -表示你希望在更新处于后台 时 安装该更新但) 默认情况下在后台等待 minimumBackgroundDuration 数秒 (0以便用户上下文不会丢失除非应用暂停时间足够长而不重要。CheckFrequency此枚举指定你希望你的应用程序与服务器进行同步以获取更新并且可以传递到 codePushify 修饰器。 它包括以下值codePush.CheckFrequency.ON_APP_START (0) -指示你希望在应用程序的进程启动时检查更新。codePush.CheckFrequency.ON_APP_RESUME (1) -表示你希望在应用程序在 backgrounded 后返回到前台来检查是否有更新 (用户按下 home 按钮应用程序将启动单独的付款过程依此类推) 。codePush (2) -禁用自动检查更新但仅检查 codePush.sync() 在应用程序代码中调用的时间。SyncStatus此枚举提供给 syncStatusChangedCallback 可传递给方法的函数 sync 以挂钩到整个更新过程。 它包括以下值codePush.SyncStatus.CHECKING_FOR_UPDATE (0) -正在查询 codePush 服务器以获取更新。codePush.SyncStatus.AWAITING_USER_ACTION (1) -有可用更新并向最终用户显示确认对话框。 (这仅适用于 updateDialog 使用)codePush.SyncStatus.DOWNLOADING_PACKAGE (2) -正在从 codePush 服务器下载可用更新。codePush.SyncStatus.INSTALLING_UPDATE (3) -已下载并将要安装的可用更新。codePush.SyncStatus.UP_TO_DATE (4) -应用程序与配置的部署完全保持最新。codePush.SyncStatus.UPDATE_IGNORED ( 5) - 应用具有最终用户选择忽略的可选更新。 (仅在使用 时 updateDialog 适用)codePush.SyncStatus.UPDATE_INSTALLED ( 6) - 已安装可用更新并且将在函数返回后立即运行或者将在下一次恢复/重启应用时运行具体取决于 中 syncStatusChangedCallback 指定的 InstallMode SyncOptions 。codePush.SyncStatus.SYNC_IN_PROGRESS ( 7) - 存在阻止执行当前调用 sync 的正在进行的操作。codePush.SyncStatus.UNKNOWN_ERROR (-1) - 同步操作发现未知错误。UpdateState此枚举指定当前更新的状态可以在调用 方法时 getUpdateMetadata 指定该状态。 它包含以下值codePush.UpdateState.RUNNING (0) - 指示更新表示当前正在运行的应用的版本。 对于在新增功能中显示发布说明等方案这可用于标识有关应用的属性 对话框或向分析或崩溃报告服务报告最新版本。codePush.UpdateState.PENDING (1) - 指示已安装更新但尚未重启应用应用。 这可用于确定是否有挂起的更新你可能想要通过 (应用) restartApp 重启。codePush.UpdateState.LATEST (2) - 指示更新表示最新可用版本并且可能当前正在运行或挂起。Objective-C API 参考 (iOS)Objective-C API 通过将 标头导入 CodePush.h AppDelegate.m 文件提供由名为 的单个公共类组成 CodePush 。CodePush包含用于检索的静态方法该方法用于检索 NSURL 表示最新 JavaScript 捆绑文件的并且可以 RCTRootView 在 initWithBundleURL AppDelegate 文件中启动应用时将其传递到的方法。CodePush类的方法可以被视为复合解析程序它始终加载适当的绑定以适应以下方案当最终用户从应用商店安装应用时 (如 1.0.0) 一样他们将获取二进制文件中包含的 JS 捆绑包。 这是你在不使用 CodePush 的情况下获得的行为但我们确保它不会中断 )开始发布 CodePush 更新后最终用户会立即获取用于表示已配置部署的最新版本的 JS 捆绑包。 这是一种允许您循环访问存储的内容的行为。一旦你将更新发布到应用商店 (如 1.1.0) 最终用户更新该更新后他们将再次获取二进制文件中包含的 JS 捆绑包。 此行为可确保 CodePush 以前的二进制版本所使用的更新不 (因为我们不知道它们会) 运行最终用户始终具有应用的有效版本。重复 #2并 #3 CodePush 版本和应用商店版本是否继续进入无限大 (和更高版本 )由于此行为你可以在必要时安全地将更新部署到应用商店 (的) 和 CodePush并确保你的最终用户将始终获取最新版本。方法(NSURL *) bundleURL -返回上文所述的最新 JS 包 NSURL 。 此方法假定应用二进制文件中包含的 JS 包的名称为 main.jsbundle 。(NSURL *) bundleURLForResource (NSString *) context.resourcename -等效于 bundleURL 方法但也允许自定义在应用二进制文件中搜索的 JS 包的名称。 如果不将此文件命名则 (main 默认约定) 。 此方法假定 JS 捆绑包的扩展为 *.jsbundle 。(NSURL *) bundleURLForResource (NSString *) resourceName withExtension (NSString *) resourceExtension 等效于 方法但也允许自定义在应用二进制文件中搜索的 JS 捆绑包使用的扩展。 bundleURLForResource: 如果不将此文件命名则 (*.jsbundle 默认约定) 。(void) overrideAppVersion (NSString) * appVersionOverride - 设置应用程序的二进制接口的版本否则默认为 CFBundleShortVersionString 在 Info.plist 中指定为 的 App Store 版本。 在加载捆绑 URL 之前应调用一次。(void) setDeploymentKey (NSString *) deploymentKey - 设置应用在查询更新时应该使用的部署密钥。 这是在 Info.plist 中设置部署密钥或在调用 或 时在 JS 中指定部署密钥的动态 checkForUpdate 替代方法 sync 。Android (Java API)适用于 React Native 0.60 及以上版本的 API由于 autolinking react-native.config.js 使用 链接插件因此构造函数在该文件中指定。 但是可以通过将这些值放在字符串资源中来替代自定义变量来管理 CodePush 插件。公钥 - 用于代码签名功能中的捆绑验证。 有关代码 签名 功能的详细信息请参阅代码签名部分。若要设置公钥应添加公钥的内容名称 strings.xml 为 CodePushPublicKey 。 CodePush 会自动获取此属性并启用代码签名功能。 例如your-public-key服务器 URL - 用于指定 CodePush 服务器 URL。通过将路径添加到名称 为 的 来重写 https://codepush.appcenter.ms/ strings.xml 默认值 CodePushServerUrl 。 CodePush 会自动获取此属性并将使用此路径发送请求。 例如https://yourcodepush.server.com用于响应本机低于0.60 的 API可以通过将类导入 com.microsoft.codepush.react.CodePush 到 MainActivity 文件中来提供 Java API并包含名为的单个公共类 CodePush 。CodePush构造 CodePush 客户端运行时并表示 ReactPackage 添加到应用的包列表的实例。构造函数CodePush (String deploymentKeyActivity mainActivity) -创建 CodePush 运行时的新实例该实例将用于通过提供的部署密钥来查询服务是否有更新。 在 mainActivity this 类中配置响应包列表时应始终将参数设置为 MainActivity 。 此构造函数将 CodePush 运行时置于 发布模式因此如果要启用调试行为请改用以下构造函数。CodePush (String deploymentKeyActivity mainActivityBool isDebugMode) 等效于以前的构造函数但允许您指定是否希望 CodePush 运行时处于调试模式。 使用此构造函数时 isDebugMode 应始终将参数设置为 BuildConfig.DEBUG 使其与生成类型保持同步。 将 CodePush 置于调试模式时会启用以下行为每当将新的二进制文件部署到模拟器/设备时不会从存储中删除旧的 CodePush 更新。 利用此行为你可以部署新的二进制文件而无需在开发期间碰撞版本并且无需在每次应用程序调用时持续获取相同的更新 sync 。只要安装了 CodePush 更新就会删除响应本机运行时在调试模式下维护的本地缓存。 这可确保在应用更新后重新启动应用后可以看到预期的更改。 一旦合并 此 PR 就不再需要执行此操作。CodePush (String deploymentKey Context context boolean isDebugMode Integer publicKeyResourceDescriptor) - 等效于上一构造函数但允许你指定读取公钥内容所需的公钥资源描述符。 有关代码 签名 功能的详细信息请参阅代码签名部分。CodePush (String deploymentKey、 Context context、 boolean isDebugMode、 String serverUrl) - 构造函数允许你指定 CodePush 服务器 URL。 默认值 https://codepush.appcenter.ms/ 由 中指定的值替代 serverUrl 。静态方法getBundleUrl () - 返回应用的 JS 捆绑文件最新版本的路径假定资源名称为 index.android.bundle 。 如果应用使用不同的捆绑名称请使用此方法的重载版本这样就可以指定它。 此方法具有与上述 Objective-C 等效项相同的解析行为。getBundleUrl (String bundleName) - 使用指定的资源名称返回应用的 JS 捆绑文件最新版本的路径 (index.android.bundle) 。 此方法具有与上述 Objective-C 等效项相同的解析行为。overrideAppVersion (String appVersionOverride) - 设置应用程序的二进制接口的版本否则默认为 versionName build.gradle 中指定为 的 Play Store 版本。 在构造 CodePush 实例之前应调用一次。