Example #1
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            AppCenterLog.Info(LogTag, "OnReleaseAvailable id=" + releaseDetails.Id
                              + " version=" + releaseDetails.Version
                              + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl);
            var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false;

            if (custom)
            {
                var  title = "Version " + releaseDetails.ShortVersion + " available!";
                Task answer;
                if (releaseDetails.MandatoryUpdate)
                {
                    answer = Current.MainPage.DisplayAlert(title, releaseDetails.ReleaseNotes, "Update now!");
                }
                else
                {
                    answer = Current.MainPage.DisplayAlert(title, releaseDetails.ReleaseNotes, "Update now!", "Maybe tomorrow...");
                }
                answer.ContinueWith((task) =>
                {
                    if (releaseDetails.MandatoryUpdate || ((Task <bool>)task).Result)
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Update);
                    }
                    else
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    }
                });
            }
            return(custom);
        }
        private bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Look at releaseDetails public properties to get version information,
            // release notes text or release notes URL
            string versionName             = releaseDetails.ShortVersion;
            string verionCodeOrBuildNumber = releaseDetails.Version;
            string releaseNotes            = releaseDetails.ReleaseNotes;
            Uri    releaseNotesUrl         = releaseDetails.ReleaseNotesUrl;

            // Build dialog
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
            AlertDialog         alert         = dialogBuilder.Create();

            alert.SetTitle("Version: " + versionName + " is available!");
            alert.SetMessage(verionCodeOrBuildNumber);
            alert.SetButton("Ok", (sender, e) => {
                Distribute.NotifyUpdateAction(UpdateAction.Update);

                if (!releaseDetails.MandatoryUpdate)
                {
                    alert.SetButton2("Cancel", (sender1, e1) => {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    });
                }
            });
            alert.SetCancelable(false);
            alert.Show();

            // Return true if you are using your own dialog
            // Return false otherwise
            return(true);
        }
Example #3
0
        private static bool OnReleaseAvailable(ReleaseDetails release)
        {
            AppCenterLog.Info(Constants.AppCenterLogTag, $"{nameof(OnReleaseAvailable)} id={release.Id} version={release.Version} mandatory={release.MandatoryUpdate}");

            var message = $"New release {release.ShortVersion}({release.Version}) available";

            // On mandatory update, user cannot postpone
            var answer = release.MandatoryUpdate ? UserDialogs.Instance.AlertAsync(message, "Warning!", "Download and install") :
                         UserDialogs.Instance.ConfirmAsync(message, "Warning!", "Download and install", "Not now");

            answer.ContinueWith(task =>
            {
                // If mandatory or if answer was positive
                if (release.MandatoryUpdate || ((Task <bool>)task).Result)
                {
                    // Notify SDK that user selected update
                    AppCenterLog.Info(Constants.AppCenterLogTag, "Notify Update");
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Notify SDK that user selected postpone (for 1 day)
                    // Note that this method call is ignored by the SDK if the update is mandatory
                    AppCenterLog.Info(Constants.AppCenterLogTag, "Notify Postpone");
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            // Return true if you are using your own dialog, false otherwise
            return(true);
        }
Example #4
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            AppCenterLog.Info(LogTag, "OnReleaseAvailable id=" + releaseDetails.Id
                              + " version=" + releaseDetails.Version
                              + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl);
            var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false;

            if (custom)
            {
                var builder = new AlertDialog.Builder(this);
                builder.SetTitle(string.Format(GetString(Resource.String.version_x_available), releaseDetails.ShortVersion));
                builder.SetMessage(releaseDetails.ReleaseNotes);
                builder.SetPositiveButton(Microsoft.AppCenter.Distribute.Resource.String.appcenter_distribute_update_dialog_download, delegate
                {
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                });
                builder.SetCancelable(false);
                if (!releaseDetails.MandatoryUpdate)
                {
                    builder.SetNegativeButton(Microsoft.AppCenter.Distribute.Resource.String.appcenter_distribute_update_dialog_postpone, delegate
                    {
                        Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                    });
                }
                builder.Create().Show();
            }
            return(custom);
        }
Example #5
0
        private static bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Look at releaseDetails public properties to get version information, release notes text or release notes URL
            var versionName = releaseDetails.ShortVersion;
            var versionCodeOrBuildNumber = releaseDetails.Version;
            var releaseNotes             = releaseDetails.ReleaseNotes;
            var releaseNotesUrl          = releaseDetails.ReleaseNotesUrl;

            // custom dialog
            var title = "Version " + versionName + " available!";

            // On mandatory update, user cannot postpone
            var answer = releaseDetails.MandatoryUpdate ?
                         Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install") :
                         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)
                    // Note that this method call is ignored by the SDK if the update is mandatory
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            // Return true if you are using your own dialog, false otherwise
            return(true);
        }
Example #6
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            bool OnReleaseAvailable(ReleaseDetails releaseDetails)
            {
                MobileCenterLog.Info("MobileCenterDemo", "OnReleaseAvailable id=" + releaseDetails.Id
                                     + " version=" + releaseDetails.Version
                                     + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl);
                var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false;

                if (custom)
                {
                    var         title      = "Version " + releaseDetails.ShortVersion + " available!";
                    UIAlertView messageBox = new UIAlertView();
                    messageBox.Title   = title;
                    messageBox.Message = releaseDetails.ReleaseNotes;
                    if (releaseDetails.MandatoryUpdate)
                    {
                        messageBox.AddButton("Update now!");
                    }
                    else
                    {
                        messageBox.AddButton("Update now!");
                        messageBox.AddButton("Maybe tomorrow...");
                    }
                    messageBox.Clicked += (sender, e) =>
                    {
                        if (releaseDetails.MandatoryUpdate || (e.ButtonIndex == 0))
                        {
                            Distribute.NotifyUpdateAction(UpdateAction.Update);
                        }
                        else
                        {
                            Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                        }
                    };
                    messageBox.Show();
                }
                return(custom);
            }

            Distribute.ReleaseAvailable = OnReleaseAvailable;
            MobileCenter.Start("47c882b4-21ce-41dd-96fc-8e80c41c61ea",
                               typeof(Analytics), typeof(Crashes), typeof(Push), typeof(Distribute));
            Analytics.TrackEvent("OnResignActivation");
            Analytics.TrackEvent("DidEnterBackground");
            Analytics.TrackEvent("WillEnterForeground");
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            // Code to start the Xamarin Test Cloud Agent
#if ENABLE_TEST_CLOUD
            Xamarin.Calabash.Start();
#endif

            return(true);
        }
Example #7
0
        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!";

            if (releaseDetails.MandatoryUpdate)
            {
                Distribute.NotifyUpdateAction(UpdateAction.Update);
                return(true);
            }
            else
            {
                Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                return(false);
            }
        }
Example #8
0
        protected override void OnStart()
        {
            AppCenter.Start("android=db6315f6-be53-46f8-bf99-4e384ee1e0f7;", 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);
            }
        }
Example #9
0
        private static bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Get public properties for the new release
            var versionName = releaseDetails.ShortVersion;
            var versionCodeOrBuildNumber = releaseDetails.Version;
            var releaseNotes             = releaseDetails.ReleaseNotes;
            var releaseNotesUrl          = releaseDetails.ReleaseNotesUrl;

            if (string.IsNullOrWhiteSpace(releaseNotes))
            {
                releaseNotes = "A new version for this app is available.";
            }

            // custom dialog
            var  title = $"New version available {versionName} !";
            Task answer;

            answer = Application.Current.MainPage.DisplayAlert(title, releaseNotes, "Download and install now", "later");

            answer.ContinueWith((task) =>
            {
                // If mandatory or if answer was positive, then update the app
                if (releaseDetails.MandatoryUpdate || (task as Task <bool>).Result)
                {
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Postpone the update for 1 day.
                    // This method call is ignored by the SDK if the update is mandatory
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            return(true);
        }
Example #10
0
        bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            var title = "Version " + releaseDetails.ShortVersion + " available!";
            var alert = UIAlertController.Create(title, releaseDetails.ReleaseNotes, UIAlertControllerStyle.Alert);

            alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, x => Distribute.NotifyUpdateAction(UpdateAction.Update)));
            if (!releaseDetails.MandatoryUpdate)
            {
                alert.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, x => Distribute.NotifyUpdateAction(UpdateAction.Postpone)));
            }
            return(true);
        }