跳到主要内容

0.2.0

注意

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

RuStore In-app updates SDK 支持用户设备上应用程序的最新版本。这有助于用户看到更新,评估性能改进和错误修复的结果。

使用RuStore In-app updates SDK,以通知用户应用程序的新版本并提议安装。用户将能够在后台下载版本并查看安装进度。

用户流程示例

SDK 正确运作的条件

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

  1. Android操作系统版本7.0或更高。
  2. 用户的设备上安装了RuStore。
  3. 用户的设备上的 RuStore 版本是最新的。
  4. 用户在RuStore中已授权。
  5. RuStore应用程序被授权安装应用程序。

在项目中集成

要集成,请下载RuStore AppUpdate SDK并将其导入项目(Assets → Import Package → Custom Package)。依赖项将通过SDK中包含的External Dependency Manager自动连接。

MinimumAPIlevel应设置为不低于24。应用程序的缩减(ProGuard/R8)目前不受支持,因此需要在项目设置中将其关闭(File → Build Settings → Player Settings → Publishing Settings → Minify)。

创建更新管理器

在调用库方法之前,需要使用工厂创建一个更新管理器。

RuStoreAppUpdateManager.Instance.Init();

检查更新的可用性

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

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

响应此方法时,您将获得一个 AppUpdateInfo 对象,其中包含有关更新需求的信息。请提前请求此对象并对其进行缓存,以便在用户方便的时间无延迟地请求用户启动更新下载。

调用方法 getAppUpdateInfo() 示例

RuStoreAppUpdateManager.Instance.GetAppUpdateInfo(onFailure: (error) =\> {    \`\`// Handle error},onSuccess: (info) =\> {    \`\`// Process update info});

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

  • updateAvailability - 更新的可用性:
    • UPDATE_NOT_AVAILABLE - 不需要更新。
    • UPDATE_AVAILABLE - 需要下载更新或用户设备上已下载更新。
    • DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS - 更新已在下载或安装已启动。
    • UNKNOWN - 默认状态。
  • installStatus - 如果用户当前正在安装更新,则为更新安装状态:
    • DOWNLOADED - 已下载。
    • DOWNLOADING - 正在下载。
    • FAILED - 错误。
    • INSTALLING - 正在安装。
    • PENDING - 等待中。
    • UNKNOWN - 默认状态。

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

方法可能返回错误。详细信息关于可能的错误在"可能的错误"部分有说明**。**

下载更新

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

调用方法 registerListener() 示例

RuStoreAppUpdateManager.Instance.RegisterListener(listener);

listener - 实现 IInstallStateUpdateListener 接口的类对象。

IInstallStateUpdateListener

public interface IInstallStateUpdateListener {       \`\`public void OnStateUpdated(InstallState state);}

tate对象描述了更新下载的当前状态,并包含:

  • installStatus - 如果用户当前正在安装更新,则为更新安装状态:
    • DOWNLOADED - 已下载。
    • DOWNLOADING - 正在下载。
    • FAILED - 错误。
    • INSTALLING - 正在安装。
    • PENDING - 等待中。
    • UNKNOWN - 默认状态。
  • bytesDownloaded - 已下载的字节数。
  • totalBytesToDownload - 需要下载的总字节数。
  • installErrorCode - 下载过程中的错误代码:
    • ERROR_UNKNOWN - 未知错误。
    • ERROR_DOWNLOAD - 下载错误。
    • ERROR_BLOCKED - 系统阻止安装。
    • ERROR_INVALID_APK - 更新APK无效。
    • ERROR_CONFLICT - 与当前应用程序版本冲突。
    • ERROR_STORAGE - 设备存储空间不足。
    • ERROR_INCOMPATIBLE - 与设备不兼容。
    • ERROR_APP_NOT_OWNED - 应用程序未购买。
    • ERROR_INTERNAL_ERROR - 内部错误。
    • ERROR_ABORTED - 用户拒绝安装更新。
    • ERROR_APK_NOT_FOUND - 未找到用于启动安装的apk文件。
    • ERROR_EXTERNAL_SOURCE_DENIED - 禁止启动更新。例如,在第一个方法中返回更新不可用的响应,但用户调用第二个方法。

果不再需要监听器,则可以使用unregisterListener()方法删除监听器,传递先前注册的监听器。

调用方法 unregisterListener() 示例

RuStoreAppUpdateManager.Instance.UnregisterListener(listener);

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

AppUpdateInfo对象在一次使用后将失效。要重新调用startUpdateFlow()方法,请再次使用getAppUpdateInfo()方法请求AppUpdateInfo。

调用方法 startUpdateFlow() 示例

RuStoreAppUpdateManager.Instance.StartUpdateFlow(    \`\`onFailure: (error) =\> {        \`\`// Handle error    \`\`},    \`\`onSuccess: (resultCode) =\> {        \`\`// Handle flow result    \`\`});

果用户确认了下载更新,则 resultCode = UpdateFlowResult.RESULT_OK, 如果拒绝,则resultCode = UpdateFlowResult.RESULT_CANCELED。

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

方法可能返回错误。详细信息在 可能的错误部分有说明**。**

更新安装

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

调用方法 CompleteUpdate() 示例

RuStoreAppUpdateManager.Instance.CompleteUpdate(    \`\`onFailure: (error) =\> {        \`\`// Handle error    \`\`});

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

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

可能的错误

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

错误结构:

public class RuStoreError {    \`\`public string name;    \`\`public string description;}

能的错误列表:

  • `RuStoreNotInstalledException - 用户设备上未安装RuStore。
  • RuStoreOutdatedException - 用户设备上的RuStore应用程序不支持应用程序的更新。
  • RuStoreUserUnauthorizedException - 用户未在RuStore中授权。
  • RuStoreException(message: String) - RuStore的基本错误,其他错误均继承自此。
  • RuStoreInstallException - 下载和安装错误。