0.2.0
该门户网站正在开发中。文档的完整版本请看这里.
RuStore In-app updates SDK 支持用户设备上应用程序的最新版本。这有助于用户看到更新,评估性能改进和错误修复的结果。
使用RuStore In-app updates SDK,以通知用户应用程序的新版本并提议安装。用户将能够在后台下载版本并 查看安装进度。
用户流程示例
SDK 正确运作的条件
RuStore In-app updates SDK 运行需要满足以下条件:
- Android操作系统版本7.0或更高。
- 用户的设备上安装了RuStore。
- 用户的设备上的 RuStore 版本是最新的。
- 用户在RuStore中已授权。
- 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() 方法。调用此方法时,将检查以下条件:
- 用户设备上必须安装了RuStore。
- 用户设备上的RuStoreApp版本必须是最新的。
- 用户必须在 RuStore 中获得授权。
- 用户和应用程序不应在RuStore中被封锁。
- 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
- 下载和安装错误。