Xamarin.forms 如何像浏览器一样自动保存用户名

Xamarin.forms how to auto save user name like browser

我正在使用 Xamarin.Forms

开发移动应用程序

我有以下主页包含登录信息:

我们如何让应用程序自动保存用户名,以便他们不必每次都输入(如在浏览器中)?

答案很简单:坚持。服务器通过设置包含他们希望您在呈现表单字段时看到的数据(或对它的引用)的 cookie 来做到这一点。

为了在应用程序(例如使用 Xamarin)中执行此操作,您需要将用户数据存储到某个文件或数据库中。由于您使用的是 Xamarin,因此您可能可以使用某种 ConfigurationManager 来跟踪这一点。 显然,您可以在您的应用程序的本地存储中创建一个配置文件(我认为您不需要在其中创建文件的权限 space)。

当您将信息存储在某处后,只需检索它并为其设置输入值。

您可以在 Xamarin.Forms Application class 中使用 Properties 词典。并让 Xamarin.Forms 框架处理应用程序重启和 pausing/resuming 您的应用程序之间的持久用户名。

通过将用户名写入 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"];
}

如果不存在,则表示这是用户首次登录您的应用程序。

几天前有人提出了一个非常相似的问题 - 我对那个问题的回答也适用于你的问题:

本质上,您想使用本机设置功能存储信息。我建议 反对 现在使用 Application.Properties。它目前在 Android 上不可靠,过去也有其他问题。我的链接答案中引用的 nuget 包是一种更好的方法,将来会让您省去一些麻烦。

正确的方法是通过App设置插件 https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

我在申请中所做的是。

1) 从 nuget

安装 Plugin.Settings

2)添加到Helpers->Settings.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)为了在Application Context中保留用户名设置

Settings.UserName = ViewModel.Username;

4)当您登录屏幕启动时

string username = Settings.UserName;