在-App更新优先值接收到的响应值是错误的(0),即使已验证优先级正确设置为5在谷歌Play后端。
我成功集成这个谷歌Play In-App更新插件,它工作...的样子。
官方文档提到使用更新优先级的使用,但事实并非如此。
这是一种完全不同的故事,即如何无法直接从Web UI设置优先级,但必须通过API调用。 我解决了这个障碍,但问题并不是如此。
- 我上传了我的构建(
.aab),版本代码为9至内部测试轨迹。 - 将其保存为草稿(未发布)。
- 使用 Play开发者API编辑测试轨迹并成功设置
inAppUpdatePriority为5此构建的草稿。 默认优先级未设置,但实际优先级为0。 - 我回到Play控制台仪表板并发布此新构建(手动)。
- 在我的Unity/C#代码中,记录更新版本代码(
AppUpdateInfo.AvailableVersionCode)以及优先级(AppUpdateInfo.UpdatePriority) - 我打开我的已安装的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}");
}
}
评论 (0)