C# 表单:应用程序内更新找不到新版本
我想使用应用内更新通过AppCenter分发公共更新。 我仔细地遵循了这个指南: 我在本机应用程序中配置了AppCenter分发模块,如下所示:C# 表单:应用程序内更新找不到新版本,c#,android,xamarin.forms,visual-studio-app-center,C#,Android,Xamarin.forms,Visual Studio App Center,我想使用应用内更新通过AppCenter分发公共更新。 我仔细地遵循了这个指南: 我在本机应用程序中配置了AppCenter分发模块,如下所示: protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); Distribute.ReleaseAvailable = OnReleaseAvailable; Distribute.NoReleaseAvailable = OnNoReleas
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Distribute.ReleaseAvailable = OnReleaseAvailable;
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
Distribute.SetEnabledForDebuggableBuild(true);
AppCenter.LogLevel = LogLevel.Verbose;
AppCenter.Start("android= [ ... ]", typeof(Analytics), typeof(Crashes), typeof(Distribute));
LoadApplication(new App());
}
private bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
string versionName = releaseDetails.ShortVersion;
string versionCodeOrBuildNumber = releaseDetails.Version;
string releaseNotes = releaseDetails.ReleaseNotes;
Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;
// custom dialog
var title = "Version " + versionName + " available!";
Task answer;
// On mandatory update, user can't postpone
if (releaseDetails.MandatoryUpdate)
{
answer = App.Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install");
}
else
{
answer = App.Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Maybe tomorrow...");
}
answer.ContinueWith((task) =>
{
// If mandatory or if answer was positive
if (releaseDetails.MandatoryUpdate || (task as Task<bool>).Result)
{
// Notify SDK that user selected update
Distribute.NotifyUpdateAction(UpdateAction.Update);
}
else
{
// Notify SDK that user selected postpone (for 1 day)
// This method call is ignored by the SDK if the update is mandatory
Distribute.NotifyUpdateAction(UpdateAction.Postpone);
}
});
// Return true if you're using your own dialog, false otherwise
return true;
}
private void OnNoReleaseAvailable()
{
AppCenterLog.Info("Log", "No release available callback invoked.");
}
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
Distribute.ReleaseAvailable=OnReleaseAvailable;
Distribute.NoReleaseAvailable=OnNoReleaseAvailable;
Distribute.SetEnabledForDebuggableBuild(true);
AppCenter.LogLevel=LogLevel.Verbose;
AppCenter.Start(“安卓=[…]”,typeof(分析),typeof(崩溃),typeof(分发));
加载应用程序(新应用程序());
}
私有bool OnReleaseAvailable(ReleaseDetails ReleaseDetails)
{
string versionName=releaseDetails.ShortVersion;
字符串versionCodeOrBuildNumber=releaseDetails.Version;
字符串releaseNotes=releaseDetails.releaseNotes;
Uri releaseNotesUrl=releaseDetails.releaseNotesUrl;
//自定义对话框
var title=“Version”+versionName+“可用!”;
任务回答;
//在强制更新时,用户不能推迟
if(releaseDetails.MandatoryUpdate)
{
答案=App.Current.MainPage.DisplayAlert(标题,发行说明,“下载并安装”);
}
其他的
{
答案=App.Current.MainPage.DisplayAlert(标题,发行说明,“下载并安装”,“可能明天…”);
}
回答。继续((任务)=>
{
//如果是强制性的,或者回答是肯定的
if(releaseDetails.MandatoryUpdate | |(任务作为任务).Result)
{
//通知SDK用户已选择更新
distribution.NotifyUpdateAction(UpdateAction.Update);
}
其他的
{
//通知SDK用户选择推迟(1天)
//如果更新是强制性的,SDK将忽略此方法调用
Distribute.NotifyUpdateAction(UpdateAction.Delay);
}
});
//如果使用自己的对话框,则返回true,否则返回false
返回true;
}
私有void onnoreleaseavable()
{
AppCenterLog.Info(“Log”,“未调用可用的发布回调”);
}
但是,OnReleaseAvailable方法从未触发。
这是调用AppCenter.Start()方法时的AppCenter日志:
[AppCenter]HTTP响应状态=404有效负载={“代码”:“未找到”,“消息”:“错误:未找到appId的公共发布:67168064-b072-430e-b513-25171d1e8b5d”}
[AppCenterDistribute]当前用户没有可用的版本。
[AppCenterDistribute]调用listener.onNorelease可用
新版本已通过AppCenter在Google Play store上正确提交,更新可用。因此,为什么找不到发布版本?[我认为这不适用,因为有错误消息,但我想知道这是否会给出相同的错误消息,或者到底发生了什么。]作为测试,如果添加代码手动检查更新(可能在按钮上),会发生什么<代码>分发。CheckForUpdate()代码>我尝试过,但没有任何改变。OnNoReleaseAvailable回调已触发。请确保此应用的新版本位于正确的组中。如果不在正确的组中,则无法检测释放。此外,我们不建议在Google Play应用程序中使用App Center分发模块。请看更多。我相信情况是这样的:文档没有很好地解释AppCenter版本和Store版本之间的区别。AppCenter SDK调用仅在人们从AppCenter(而不是谷歌商店)下载并更新时使用。这可以是公开的。但您会将感兴趣的人引导到AppCenter,而不是Play Store。谷歌有自己的更新机制。正如@Anastasia的链接所解释的,当您发布到存储时,首先要进行GooglePlay项目配置,将虚拟存根放入
分发
。这些没有任何作用-永远不会有发布。谢谢回复。那么我认为文档有点误导。