C# 表单:应用程序内更新找不到新版本

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

我想使用应用内更新通过AppCenter分发公共更新。 我仔细地遵循了这个指南:

我在本机应用程序中配置了AppCenter分发模块,如下所示:

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项目配置,将虚拟存根放入
分发
。这些没有任何作用-永远不会有发布。谢谢回复。那么我认为文档有点误导。