首页 > 解决方案 > Xamarin.Forms 将用户保存在共享函数中

问题描述

我使用在 IOS 中创建的 SharedFunctions 接口在手机中保存了一个令牌:

public void SaveAccessToken(string token)
{
    NSUserDefaults.StandardUserDefaults.SetString(token, "AccessToken");
}

在安卓中:

public void SaveAccessToken(string token)
{
    var mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
    var mPrefsEditor = mSharedPrefs.Edit();

    mPrefsEditor.PutString("AccessToken", token);
    mPrefsEditor.Commit();
    mPrefsEditor.Dispose();
    mSharedPrefs.Dispose();
}

我还想保存一个对象而不是字符串。

标签: xamarin.formsxamarin.androidxamarin.ios

解决方案


看一下NSUserDefaults 的文档,似乎写一个对象有点受限制,因此我建议你换一种方式:使用 Newtonsoft.JSON (或另一个 JSON 库)序列化对象并编写序列化对象。

对于 iOS:

public void SaveAccessToken<T>(string key, T value)
{
    var serializedObject = JsonConvert.SerializeObject(value);
    NSUserDefaults.StandardUserDefaults.SetString(serializedObject, key);
}

对于 Android 也是如此

public void SaveAccessToken<T>(string key, T value)
{
    var serializedObject = JsonConvert.SerializeObject(value);

    var mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
    var mPrefsEditor = mSharedPrefs.Edit();

    mPrefsEditor.PutString(serializedObject, key);
    mPrefsEditor.Commit();
    mPrefsEditor.Dispose();
    mSharedPrefs.Dispose();
}

推荐阅读