2016-05-30 6 views
1

Я занимаюсь разработкой мобильных приложений с использованием Xamarin.FormsXamarin.forms как АвтоСохранение имени пользователя как браузер

У меня есть страница на xamarin.forms содержит логин информацию enter image description here

Как мы можем иметь приложение автоматически сохраняет имя пользователя, чтобы им не приходилось вводить его каждый раз (как в браузере)?

ответ

3

Вы можете использовать словарь Properties в Xamarin.Forms Application класс. И пусть фреймворк Xamarin.Forms обрабатывает постоянное имя пользователя между перезапусками приложений и приостановкой/возобновлением вашего приложения.

Сохранить имя пользователя, написав его Properties словарь

var properties = Xamarin.Forms.App.Current.Properties; 
if(!properties.ContainsKey("username") 
{ 
    properties.Add("username", username); 
} 
else 
{ 
    properties["username"] = username; 
} 

Затем, когда ваш экран Войти собирается появиться (например, в OnAppearing метод) проверить Properties для имени пользователя:

var properties = Xamarin.Forms.App.Current.Properties; 
if(properties.ContainsKey("username") 
{ 
    var savedUsername = (string)properties["username"]; 
} 

Если его там нет, значит, это первый раз, когда пользователь входит в ваше приложение.

0

Ответ прост: стойкость. Серверы делают это, устанавливая файлы cookie, содержащие данные (или ссылку на них), которые они хотят видеть при визуализации поля формы.

Чтобы сделать это в приложении (например, с Xamarin), вам нужно хранить данные пользователя в файле или базе данных где-нибудь. Поскольку вы используете Xamarin, вы, вероятно, можете использовать своего рода ConfigurationManager, чтобы отслеживать это. Очевидно, что вы можете просто создать файл конфигурации в локальном хранилище, которое у вас есть для вашего приложения (я не думаю, что вам нужны разрешения на создание файлов в этом пространстве).

Когда у вас есть информация, хранящаяся где-то, просто загрузите ее и установите для нее значение ввода.

+0

мог добавьте шаги и код? –

2

Очень похожий вопрос был поставлен всего несколько дней назад - мой ответ на этот вопрос также относится к вашему вопросу: The best way to save Configuration data in Xamarin.Forms based app?

По сути, вы хотите, чтобы хранить информацию, используя функциональную собственные настройки. Я бы посоветовал против, используя Application.Properties. В настоящее время он не является надежным на Android, и в прошлом он имел другие проблемы. Пакет nuget, на который ссылается мой связанный ответ, является лучшим подходом и избавит вас от головной боли в будущем.

+0

У вас есть ссылка на то, что вы говорите? Или это основано на вашем опыте? Интересно, потому что похоже, что в последнем выпуске команда 'Xamarin.Forms' разрешила проблемы с' Application.Properties' –

+0

Это определенно нарушено в 2.2.0.31 на физических устройствах Android и для нескольких выпусков до этого. Я знаю, потому что мне пришлось опубликовать исправление для производственного приложения клиента всего несколько недель назад. Текущая версия на NuGet (2.2.0.45) была испорчена и вызвала множество проблем людей из-за некоторых не связанных между собой проблем. Они * просто * нажали обновление несколько часов назад, чтобы решить эту проблему, но еще не пробовали. И это не первый случай, когда возникли серьезные проблемы с функцией «Application.Properties». ИМО это просто не одна из самых сложных функций Xamarin Forms. –

+0

У меня не было никаких проблем с Properties на Android, но это имеет смысл, что вы говорите. Итак, я отвечу на ваш ответ. –

0

Правильный способ сделать это через настройку App плагина https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

Что я сделал в моем заявлении.

1) Установленные Plugin.Settings из NuGet

2) Добавлено в Helpers-> Настройки.CS (автоматически сгенерированный файл с помощью плагина) следующие

public static class Settings 
      { 
       private static ISettings AppSettings 
       { 
        get { return CrossSettings.Current; } 
       } 

       private const string UserNameKey = "username_key"; 
       private static readonly string UserNameDefault = "demo"; 
       public static string UserName 
       { 
        get { return AppSettings.GetValueOrDefault<string>(UserNameKey, UserNameDefault); } 
        set { AppSettings.AddOrUpdateValue<string>(UserNameKey, value); } 
       } 
    } 

3) Для того, чтобы сохранить имя пользователя в контексте приложений набор

Settings.UserName = ViewModel.Username; 

4) При входе в экран начинает

string username = Settings.UserName; 
Смежные вопросы