C# 存储Xamarin应用程序的用户设置的最佳方法?

C# 存储Xamarin应用程序的用户设置的最佳方法?,c#,xamarin,xamarin.forms,mobile-application,C#,Xamarin,Xamarin.forms,Mobile Application,我正在Xamarin.Forms(Android、iOS和Windows Phone)中开发一个客户端应用程序,它将与服务器联系以获取用户数据。在这个应用程序中,我需要存储用户设置,如用户首选项、服务器Url、用户名、身份验证令牌。等等 有人能给我推荐一种存储应用程序用户设置的标准方法和最佳方法吗 提前感谢。用于根据需要存储用户设置。这将有助于通过所有移动应用程序的共享代码访问设置 以下代码: public static class Settings { private static

我正在Xamarin.Forms(Android、iOS和Windows Phone)中开发一个客户端应用程序,它将与服务器联系以获取用户数据。在这个应用程序中,我需要存储用户设置,如用户首选项、服务器Url、用户名、身份验证令牌。等等

有人能给我推荐一种存储应用程序用户设置的标准方法和最佳方法吗

提前感谢。

用于根据需要存储用户设置。这将有助于通过所有移动应用程序的共享代码访问设置

以下代码:

public static class Settings 
{

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

    //Setting Constants

    const string UserName = "username";
    private static readonly string UserNameDefault = string.Empty;

    public static string UserName
    {
        get { return AppSettings.GetValueOrDefault<string>(UserName, UserNameDefault); }
        set { AppSettings.AddOrUpdateValue<string>(UserName, value); }
    }
}
公共静态类设置
{
专用静态ISettings应用程序设置
{
得到
{
返回CrossSettings.Current;
}
}
//设置常数
常量字符串UserName=“UserName”;
私有静态只读字符串usernamefault=string.Empty;
公共静态字符串用户名
{
get{return AppSettings.GetValueOrDefault(用户名,用户名默认值);}
set{AppSettings.AddOrUpdateValue(用户名,值);}
}
}

您可以使用Xamarin团队开发的跨平台插件:

public class AppPreferences
{
    static ISettings AppSettings => CrossSettings.Current;

    public static string UserName
    {
      get { return AppSettings.GetValueOrDefault<string>(UserNameKey, UserNameDefault); }
      set { AppSettings.AddOrUpdateValue<string>(UserNameKey, value); }
    }
}
公共类AppPreferences
{
静态ISettings AppSettings=>CrossSettings.Current;
公共静态字符串用户名
{
get{return AppSettings.GetValueOrDefault(UserNameKey,UserNameDefault);}
set{AppSettings.AddOrUpdateValue(UserNameKey,value);}
}
}

有关如何将此包添加到解决方案的更多信息,请按照上面的链接进行操作。

我认为将使用SQLite,使用用户设置创建表。SQLite是一个类似于手机的.txt文件。您还可以为其他功能添加更多表


您始终可以使用设置创建配置文件并重新加载它。

SQLite与
NSUserDefaults
SharedReferences
相比有什么好处?对于一些已经很容易在操作系统中使用的东西来说,这似乎是一个沉重的解决方案,但可能有一些好处我忽略了。@dylansturg对于大多数设置,
NSUserDefaults
SharedReferences
是一个不错的选择,但是对于那些,正如您所期望的,在关系数据库中工作得更好并且可能有多行的东西,对SQLite更有利。例如,存储单个身份验证令牌可以在
NSUserDefaults
SharedReferences
中工作,但是如果以后必须存储多个身份验证令牌,那么使用SQLite表可能更有意义(虽然我仍然会使用设置来存储3个或更少的令牌,但这只是我的首选)。我不建议使用任何一种身份验证令牌-您希望以安全的方式存储这些令牌(例如使用
钥匙链
)。我明白你的意思,可以有“多个值”,但我从来没有见过我的应用程序的设置是完全相关的,或者我需要同一设置有多个值。即使在您的场景中,您也希望区分不同的令牌-它们是不可互换的-因此只需将它们存储在不同的密钥中即可。不过,这是需要记住的。