首页 > 解决方案 > Xamarin.Forms:应用内更新未找到新版本

问题描述

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

https://docs.microsoft.com/en-us/appcenter/sdk/distribute/xamarin

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

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.");
}      

但是,永远不会触发 OnReleaseAvailable 方法。这是调用 AppCenter.Start() 方法时的 AppCenter 日志:

[AppCenter] HTTP 响应状态=404 有效负载={"code":"not_found","message":"错误:未找到 appId 的公开版本:67168064-b072-430e-b513-25171d1e8b5d"} [AppCenterDistribute] 无可用版本给当前用户。[AppCenterDistribute] 调用 listener.onNoReleaseAvailable。

新版本已通过 AppCenter 在 Google Play 商店中正确提交,并且更新可用。因此,为什么永远找不到版本?

标签: c#androidxamarin.formsvisual-studio-app-center

解决方案


推荐阅读