【问题标题】:Best way to store the user settings for Xamarin Application?存储 Xamarin 应用程序用户设置的最佳方式?
【发布时间】:2016-09-08 11:28:59
【问题描述】:

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

谁能给我推荐一种标准最佳方式来存储应用程序用户设置?

提前致谢。

【问题讨论】:

    标签: c# xamarin xamarin.forms mobile-application


    【解决方案1】:

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

    以下代码:

    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); }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以将 Xamarin 团队开发的 Cross Platform Settings API 作为插件使用:

      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); }
          }
      }
      

      点击上面的链接了解有关如何将此包添加到您的解决方案的更多信息。

      【讨论】:

        【解决方案3】:

        在我看来将是 SQLite,使用用户设置创建表。 SQLite 像 .txt 文件一样保存在手机上。您还可以为其他功能添加更多表格。

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

        【讨论】:

        • SQLite 相对于NSUserDefaultsSharedPreferences 有什么好处?对于在操作系统中已经很容易使用的东西来说,这似乎是一个繁重的解决方案,但我可能忽略了一些好处。
        • @dylansturg 对于大多数设置,NSUserDefaultsSharedPreferences 是可行的方法,但对于如您所料,在关系数据库中工作得更好并且可能有多行的事情,是更适合 SQLite。例如,存储单个身份验证令牌可以在 NSUserDefaultsSharedPreferences 中工作,但是如果稍后您必须存储多个身份验证令牌,那么使用 SQLite 表可能更有意义(尽管我仍然会使用设置可能存储 3 个或更少的令牌,但这只是我的偏好)。
        • 我会劝阻身份验证令牌的任何一个选项 - 您希望以安全的方式存储它们(例如KeyChain)。我明白您所说的可能有“多个值”,但我从未见过我的应用程序设置完全相关或我需要多个值用于同一设置的情况。即使在您的场景中,您也希望区分不同的令牌 - 它们不可互换 - 因此只需将它们存储在不同的键中即可。不过,请记住这一点。
        猜你喜欢
        • 2016-12-23
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2011-11-26
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        相关资源
        最近更新 更多