Rajzer
Rajzer

Reputation: 1286

Xamarin.Forms save user in Shared Functions

I saved a token in the mobile with SharedFunctions interface i created In IOS:

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

In Android:

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

I also want to save a object instead of a string.

Upvotes: 0

Views: 69

Answers (1)

Paul Kertscher
Paul Kertscher

Reputation: 9703

Having a look at the documentation of NSUserDefaults, it seems as if writing an object is somewhat restricted, hence I'd suggest you to go another way: Serialize the object using Newtonsoft.JSON (or another JSON library) and write the serialized object.

For iOS:

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

and similarly for 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();
}

Upvotes: 1

Related Questions