【发布时间】:2016-09-08 11:28:59
【问题描述】:
我正在 Xamarin.Forms(Android、iOS 和 Windows Phone)中开发一个客户端应用程序,它将联系服务器以获取用户数据。在这个应用程序中,我需要存储用户设置,如用户首选项、服务器网址、用户名、身份验证令牌。 . .等等
谁能给我推荐一种标准和最佳方式来存储应用程序用户设置?
提前致谢。
【问题讨论】:
标签: c# xamarin xamarin.forms mobile-application
我正在 Xamarin.Forms(Android、iOS 和 Windows Phone)中开发一个客户端应用程序,它将联系服务器以获取用户数据。在这个应用程序中,我需要存储用户设置,如用户首选项、服务器网址、用户名、身份验证令牌。 . .等等
谁能给我推荐一种标准和最佳方式来存储应用程序用户设置?
提前致谢。
【问题讨论】:
标签: c# xamarin xamarin.forms mobile-application
根据需要使用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); }
}
}
【讨论】:
您可以将 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); }
}
}
点击上面的链接了解有关如何将此包添加到您的解决方案的更多信息。
【讨论】:
在我看来将是 SQLite,使用用户设置创建表。 SQLite 像 .txt 文件一样保存在手机上。您还可以为其他功能添加更多表格。
您始终可以使用设置创建配置文件并重新加载。
【讨论】:
NSUserDefaults 和SharedPreferences 有什么好处?对于在操作系统中已经很容易使用的东西来说,这似乎是一个繁重的解决方案,但我可能忽略了一些好处。
NSUserDefaults 和 SharedPreferences 是可行的方法,但对于如您所料,在关系数据库中工作得更好并且可能有多行的事情,是更适合 SQLite。例如,存储单个身份验证令牌可以在 NSUserDefaults 和 SharedPreferences 中工作,但是如果稍后您必须存储多个身份验证令牌,那么使用 SQLite 表可能更有意义(尽管我仍然会使用设置可能存储 3 个或更少的令牌,但这只是我的偏好)。
KeyChain)。我明白您所说的可能有“多个值”,但我从未见过我的应用程序设置完全相关或我需要多个值用于同一设置的情况。即使在您的场景中,您也希望区分不同的令牌 - 它们不可互换 - 因此只需将它们存储在不同的键中即可。不过,请记住这一点。