跳到主要内容

1.0.0

注意

该门户网站正在开发中。文档的完整版本请看这里.

RuStore In-app updates SDK帮助维持用户设备上应用程序的最新版本。

当用户维持应用程序的最新状态时,他们可以体验新功能并利用性能改进和错误修复。

您可以使用RuStore In-app updates SDK来显示应用程序更新过程,该过程支持后台下载和安装更新以及状态控制。用户在更新下载期间可以继续使用您的应用程序。

参阅示例应用程序,以了解如何正确集成更新SDK: https://gitflic.ru/project/rustore/flutter-rustore-update

用户流程示例

SDK 正确运作的条件

RuStore In-app updates SDK 运行需要满足以下条件:

  1. Android操作系统版本6.0或更高。
  2. 用户设备上必须安装了RuStore。
  3. 用户设备上的RuStoreApp版本必须是最新的。
  4. RuStore应用程序必须被授权安装应用程序。

实现示例

为了了解如何正确集成用于处理 push-通知的包,请参阅示例应用程序:

https://gitflic.ru/project/rustore/flutter-rustore-update/file?file=example

在项目中集成

要将包集成到项目,您需要执行以下命令:

flutter pub add flutter_rustore_update

个命令将在 pubspec.yaml 文件中添加一个字符串:

dependencies:\`  \`\`flutter_rustore_up

检查更新的可用性

在请求更新之前,请检查您的应用是否有更新可用。要检查更新的可用性,请调用info()方法。调用此方法时,将检查以下条件:

  1. 用户设备上必须安装了RuStore。
  2. 用户设备上的RuStoreApp版本必须是最新的。
  3. 用户和应用程序不应在RuStore中被封锁。

响应此方法时,您将获得一个 info 对象,其中包含有关更新需求的信息。

RustoreUpdateClient.info().then((info) {    \`\`print(info);}).catchError((err) {    \`\`print(err);});

nfo 对象包含一组参数,这些参数是确定更新可用性所必需的:

  • updateAvailability - 更新的可用性:
    • UPDATE_AILABILITY_NOT_AVAILABLE - 不需要更新。
    • UPDATE_AILABILITY_AVAILABLE - 需要下载更新或用户设备上已下载更新。
    • UPDATE_AILABILITY_IN_PROGRESS - 更新已在下载或安装已启动。
    • UPDATE_AILABILITY_UNKNOWN - 默认状态。
  • installStatus - 如果用户当前正在安装更新,则为更新安装状态:
    • INSTALL_STATUS_DOWNLOADED - 已下载。
    • INSTALL_STATUS_DOWNLOADING - 正在下载。
    • INSTALL_STATUS_FAILED - 错误。
    • INSTALL_STATUS_INSTALLING - 正在安装。
    • INSTALL_STATUS_PENDING - 等待中。
    • INSTALL_STATUS_UNKNOWN - 默认状态。

有当 updateAvailability 字段包含 UPDATE_AILABILITY_AVAILABLE值时,才能启动更新下载。

方法可能返回错误。可能的错误

下载更新

确认更新可用后,您可以请求用户下载更新,但在此之前,需要使用listener()方法启动更新下载状态监听器。

RustoreUpdateClient.listener((value) {  \`\`print( \"listener installStatus \${value.installStatus}\" );  \`\`print( \"listener bytesDownloaded \${value.bytesDownloaded}\" );  \`\`print( \"listener totalBytesToDownload \${value.totalBytesToDownload}\" );  \`\`print( \"listener installErrorCode \${value.installErrorCode}\" );  \`\`if (value.installStatus == INSTALL_STATUS_DOWNLOADED) {    \`\`//你可以在这里调用 complete()方法  \`\`}});

state对象描述了更新下载的当前状态。对象包含:

  • installStatus - 如果用户当前正在安装更新,则为更新安装状态:
    • INSTALL_STATUS_DOWNLOADED - 已下载。
    • INSTALL_STATUS_DOWNLOADING - 正在下载。
    • INSTALL_STATUS_FAILED - 错误。
    • INSTALL_STATUS_INSTALLING - 正在安装。
    • INSTALL_STATUS_PENDING - 等待中。
    • INSTALL_STATUS_UNKNOWN - 默认状态。
  • bytesDownloaded - 已下载的字节数。
  • totalBytesToDownload - 需要下载的总字节数。
  • installErrorCode - 下载过程中的错误代码。

多可能的错误可以在"可能的错误"部分找到。

下载与RuStore UI

要启动应用程序更新的下载,请调用download()方法。

RustoreUpdateClient.download().then((value) {  \`\`print( \"download code \${value.code}\" );}).catchError((err) {  \`\`print( \"download err \${err}\" );});

果用户确认了下载更新,则 value.code = ACTIVITY_RESULT_OK, 如果拒绝,则 value.code = ACTIVITY_RESULT_CANCELED

调用方法后,您可以在监听器中跟踪更新下载的状态。如果在监听器中接收到INSTALL_STATUS_DOWNLOADED状态,您可以调用更新安装方法。建议通知用户更新安装已准备就绪。

方法可能返回错误。可能的错误

强制更新

要启动应用程序强制更新的下载,请调用immediate()方法。

\<br\>RustoreUpdateClient.immediate().then((value) {\<br\> print(\"immediate code \${value.code}\");\<br\>}).catchError((err) {\<br\> print(\"immediate err \${err}\");\<br\>});\<br\>

果用户确认了下载更新,则 value.code = ACTIVITY_RESULT_OK, 如果拒绝,则 value.code = ACTIVITY_RESULT_CANCELED

调用方法后,您可以在监听器中跟踪更新下载的状态。如果在监听器中接收到INSTALL_STATUS_DOWNLOADED状态,您可以调用更新安装方法。建议通知用户更新安装已准备就绪。

方法可能返回错误。更多错误列表可以在"可能的错误"部分找到。

无界面更新

要启动应用程序更新的无界面RuStore下载,请调用silent()方法。

\<br\>RustoreUpdateClient.silent().then((value) {\<br\> print(\"silent code \${value.code}\");\<br\>}).catchError((err) {\<br\> print(\"silent err \${err}\");\<br\>});\<br\>

用方法后,您可以在监听器中跟踪更新下载的状态。如果在监听器中接收到INSTALL_STATUS_DOWNLOADED状态,您可以调用更新安装方法。建议通知用户更新安装已准备就绪。

方法可能返回错误。更多错误列表可以在"可能的错误"部分找到。

更新安装

下载apk更新文件完成后,您可以启动更新的安装。要启动更新的安装,请调用complete()方法。

RustoreUpdateClient.complete().catchError((err) {  \`\`print( \"complete err \${err}\" );});

新通过android原生工具进行。如果更新成功,应用程序将关闭。

在更新阶段可能会出现错误。可能的错误

可能的错误

所有插件中的错误都以常量形式实现。常量的描述在const.dart文件中。

如果您收到onFailure响应,则不建议自行向用户显示错误。显示错误可能会对用户体验产生负面影响。

可能的错误列表:

  • UPDATE_ERROR_DOWNLOAD - 下载错误。
  • UPDATE_ERROR_BLOCKED - 系统阻止安装。
  • UPDATE_ERROR_INVALID_APK - 更新APK无效。
  • UPDATE_ERROR_CONFLICT - 与当前应用程序版本冲突。
  • UPDATE_ERROR_STORAGE - 设备存储空间不足。
  • UPDATE_ERROR_INCOMPATIBLE - 与设备不兼容。
  • UPDATE_ERROR_APP_NOT_OWNED - 应用程序未购买。
  • UPDATE_ERROR_INTERNAL_ERROR - 内部错误。
  • UPDATE_ERROR_ABORTED - 用户拒绝安装更新。
  • UPDATE_ERROR_APK_NOT_FOUND - 未找到用于启动安装的APK。
  • UPDATE_ERROR_EXTERNAL_SOURCE_DENIED - 禁止启动更新。例如,在第一个方法中返回更新不可用的响应,但用户调用第二个方法。