Уведомление об обновлении приложения в Visual Studio App Center - PullRequest
0 голосов
/ 07 февраля 2019

Я использую центр приложений Visual Studio для распространения своего приложения, проблема в том, что мне нужно, чтобы мои группы рассылки уведомлялись об обновлении моего приложения и заставляли их обновляться, чтобы у всей моей группы рассылки была последняя версия,Приведенный ниже код я получил с веб-сайта Microsoft и поместил в свой App.xaml.cs в OnStart () .Проблема в том, что уведомление о новой версии не отображает или не уведомляет мою группу рассылки.

protected override void OnStart ()
{
    AppCenter.Start("android=<appsecret>;", typeof(Analytics), typeof(Crashes), typeof(Distribute));
    Analytics.SetEnabledAsync(true);

    Distribute.ReleaseAvailable = OnReleaseAvailable;

    bool OnReleaseAvailable(ReleaseDetails releaseDetails)
    {
        string versionName = releaseDetails.ShortVersion;
        string versionCodeOrBuildNumber = releaseDetails.Version;
        string releaseNotes = releaseDetails.ReleaseNotes;
        Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;

        var title = "Version " + versionName + " available!";
        Task answer;

        if (releaseDetails.MandatoryUpdate)
        {
           answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install");
        }
        else
        {
           answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Ask Later");
        }
        answer.ContinueWith((task) =>
        {
           if (releaseDetails.MandatoryUpdate || (task as Task<bool>).Result)
           {
               Distribute.NotifyUpdateAction(UpdateAction.Update);
           }
           else
           {
               Distribute.NotifyUpdateAction(UpdateAction.Postpone);
           }
       });

        return true;
      }
 }

1 Ответ

0 голосов
/ 07 февраля 2019

Если это документ , за которым вы следили, я вижу только то, что он явно добавляет к методу OnStart () явный вызов метода AppCenter.Start(...):

Откройте ваш App.xaml.cs (или ваш класс, который наследуется от Xamarin.Forms.Application) в вашем общем или переносимом проекте и добавьте метод ниже в методе переопределения OnStart ().

AppCenter.Start("ios={Your Xamarin iOS App Secret};android={Your Xamarin Android App secret}", typeof(Distribute));  

Затем, в этом разделе , речь идет о настройке диалогового окна обновления, где говорится:

Вы можете настроить внешний вид диалогового окна обновления по умолчанию, реализовав ReleaseAvailable Перезвоните.Вам необходимо зарегистрировать обратный вызов до вызова AppCenter.Start, как показано в следующем примере:

Distribute.ReleaseAvailable = OnReleaseAvailable;
AppCenter.Start(...);

Итак, в соответствии с вышеприведенным Distribute.ReleaseAvailable = OnReleaseAvailable; должен быть вызван до AppCenter.Start.Вы звоните это после.

Также не уверен, является ли это просто ошибкой форматирования при публикации вашего вопроса, но похоже, что вы реализуете метод OnReleaseAvailable в методе OnStart(), который недопустим в C # (или нетво всяком случае, до C # 7, что я только что понял ... круто).Поэтому, если вы не используете C # 7, вы захотите реализовать метод OnReleaseAvailable вне OnStart() или любого другого метода.IOW это должно быть реализовано как прямой член класса.Например:

protected override void OnStart ()
{
    Distribute.ReleaseAvailable = OnReleaseAvailable;
    AppCenter.Start("android=<appsecret>;", typeof(Analytics), typeof(Crashes), typeof(Distribute));
    Analytics.SetEnabledAsync(true);
}

bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
     ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...