在-App更新优先值接收到的响应值是错误的(0),即使已验证优先级正确设置为5在谷歌Play后端。

我成功集成这个谷歌Play In-App更新插件,它工作...的样子。

官方文档提到使用更新优先级的使用,但事实并非如此。

这是一种完全不同的故事,即如何无法直接从Web UI设置优先级,但必须通过API调用。 我解决了这个障碍,但问题并不是如此。

  1. 我上传了我的构建(.aab),版本代码为9至内部测试轨迹
  2. 将其保存为草稿(未发布)。
  3. 使用 Play开发者API编辑测试轨迹并成功设置inAppUpdatePriority为5此构建的草稿。 默认优先级未设置,但实际优先级为0。
  4. 我回到Play控制台仪表板并发布此新构建(手动)。
  5. 在我的Unity/C#代码中,记录更新版本代码(AppUpdateInfo.AvailableVersionCode)以及优先级(AppUpdateInfo.UpdatePriority
  6. 我打开我的已安装的Unity应用程序(版本代码为8)并在logcat中可以看到打印的新更新版本代码为9(正确)但优先级仍然是0(而不是5)。

没有任何修改的响应,从我这边, 我只是访问可用属性(代码块末尾)。

文档还有一篇关于如何测试in-app更新的专门页面。

但它提到使用内部应用共享,而事实是你无法在那里设置更新优先级(Troubleshoot部分最后一个点)。

但文档中关于更新优先级的部分,使用了轨迹如生产轨迹内部测试轨迹的例子。

因此,在文档中关于更新优先级和测试的使用存在着不一致性。

是否有任何人成功实施了in-app更新优先级,或者在Unity或native Android开发中?

任何解决此问题的线索都将不胜感激。

private IEnumerator CheckForUpdates()
    {
        var _appUpdateManager = new AppUpdateManager();

        PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
            _appUpdateManager.GetAppUpdateInfo();
        yield return appUpdateInfoOperation;

        if (appUpdateInfoOperation.Error == AppUpdateErrorCode.NoError)
        {
            var updateInfo = appUpdateInfoOperation.GetResult();

            // 只有当更新可用时才进行
            if (updateInfo.UpdateAvailability == UpdateAvailability.UpdateAvailable)
            {
                // 读取0-5的优先级整数,通过谷歌Play开发者API设置
                int priority = updateInfo.UpdatePriority;

                Debug.Log($"App Update Found! Priority Level: {priority}, Version Code: {updateInfo.AvailableVersionCode}");

                if (priority >= 4)
                {
                    // 高优先级(4-5):强制阻塞,强制立即更新
                }
                else if (priority >= 2)
                {
                    // 中等优先级(2-3):触发一个灵活的更新,下载在后台
                }
                else
                {
                    // 低优先级(0-1):什么也不做。
                    Debug.Log("低优先级更新。跳过用户提示。");
                }
            }
        }
        else
        {
            Debug.LogError($"Error checking for updates: {appUpdateInfoOperation.Error}");
        }
    }