Xamarin Forms Sharedpreferences крест

Я хотел бы знать, что является лучшим решением для управления настройками приложения кросс-платформенным способом.

В iOS мы можем изменить настройки вне приложения на экране настроек, но у нас его нет в Windows Phone и Android.

Итак, моя идея - создать обычную страницу/экран внутри приложения, отображающую все настройки моего приложения, и иметь интерфейс с методами Save() и Get(), которые я могу реализовать на каждом устройстве с помощью DependencyServices.

Правильно ли это сделать?

Ответ 1

  • В подклассе Application есть статический словарь свойств, который может использоваться для хранения данных. Это можно получить из любого места вашего кода Xamarin.Forms, используя Application.Current.Properties.
Application.Current.Properties ["id"] = someClass.ID;

if (Application.Current.Properties.ContainsKey("id"))
{
    var id = Application.Current.Properties ["id"] as int;
    // do something with id
}

Словарь свойств автоматически сохраняется на устройстве. Данные, добавленные в словарь, будут доступны, когда приложение вернется из фона или даже после его перезапуска. Xamarin.Forms 1.4 представил дополнительный метод класса Application - SavePropertiesAsync() - который можно вызвать для проактивного сохранения словаря свойств. Это позволит вам сохранять свойства после важных обновлений, а не рисковать тем, что они не будут сериализованы из-за сбоя или быть убиты ОС.

https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/

  1. Плагин Xamarin.Forms, который использует собственное управление настройками.

    • Android: SharedPreferences
    • iOS: NSUserDefaults
    • Windows Phone: IsolatedStorageSettings
    • Windows Store/Windows Phone RT: ApplicationDataContainer

https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

Ответ 2

Я попытался использовать словарь Application.Current.Properties и имел проблемы с реализацией.

Решение, которое работало с очень небольшим усилием, было Джеймс Монтеманьо Xam.Plugin.Settings NuGet. GitHub Установка NuGet автоматически создает папку помощников с параметрами Settings.cs. Чтобы создать постоянную настройку, выполните следующие действия:

    private const string QuestionTableSizeKey = "QuestionTableSizeKey";
    private static readonly long QuestionTableSizeDefault = 0;

и

    public static long QuestionTableSize
    {
        get
        {
            return AppSettings.GetValueOrDefault<long>(QuestionTableSizeKey, QuestionTableSizeDefault);
        }
        set
        {
            AppSettings.AddOrUpdateValue<long>(QuestionTableSizeKey, value);
        }
    }

Доступ и настройка в приложении выглядит следующим образом:

namespace XXX
{
    class XXX
    {
        public XXX()
        {
                long myLong = 495;
                ...
                Helpers.Settings.QuestionTableSize = myLong;
                ...
                long oldsz = Helpers.Settings.QuestionTableSize;                   
        }
    }

}