在Visual Studio应用中心应用程序更新通知

问题描述 投票:0回答:1

我使用的Visual Studio应用程序中心来分发我的应用程序的问题是我需要的时候有一个更新到我的应用我的通讯组通知,迫使他们更新,让所有我的通讯组将有最新的版本。下面我的代码从微软的网站得到它,我把它放在我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;
      }
 }
c# xamarin xamarin.forms visual-studio-app-center
1个回答
0
投票

如果你this is the document其次,我唯一看到它说,明确地添加到的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));  

再后来,在this section,它谈论定制更新对话框,在那里说:

您可以通过实现ReleaseAvailable回调定制默认更新对话框的外观。您需要调用AppCenter.Start如下面的例子之前注册回调:

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

因此,根据上述Distribute.ReleaseAvailable = OnReleaseAvailable;AppCenter.Start之前调用。您以后调用它。

另外不知道这是否只是当你发布你的问题中的格式错误,但它看起来像你正在实施OnReleaseAvailable方法,这是不是在C#中的合法(或直到C#7无论如何,我才意识到里面的OnStart()方法。 ..酷)。所以,除非你使用C#7,你将要实现的OnReleaseAvailable,或任何其他方法之外的方法OnStart()。督察应当实现为类的直接成员。例如。:

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

bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
     ... 
}
© www.soinside.com 2019 - 2024. All rights reserved.