Cross-platform preferencies

Hi Xamarin users !
We need suggestion about cross platform user's preferences saving technique.
As we know there no cross method to save preferences.
So how do you suggest to make: Or we should write abstract interface and then implement it for NSUserDefaults on iOS and SharedPreferencies on Android. Or we may write class for saving preferences to JSON object and then save it to app sandbox text file
(with getting cross platform directory). Second way seems to easy and flexible (becuse wee need storage two-dimensial array too). So what do you suggest and what troubles may be for
both ways?
Thanks In Advance!

Is this right I understand that IsolatedStorageSettings of System.IO.IsolatedStorage
is only for Silverlight version. And that for Mono android | iOS I should use own txt file and save it in System.IO.IsolatedStorage?

But when I try FileStream(fileEndPath,...) there got error that Not found part of path
/data/data/BeginnerAndroid.BegiinnerAndroid/files/reports/d40100/id40100.zip

So else I found that IsolatedStorageFile contains non-publish property "directory" that is
"/data/data/BeginnerAndroid.BeginnerAndroid/files/.config/.isolated-storage"
but when I get Environment.GetFolderPath (Environment.SpecialFolder.Personal) to copy file from assets it returning
"/data/data/BeginnerAndroid.BegiinnerAndroid/files/"
so may be file getting not found because of directories are different?

Have not compiled the above, just typed it in after extracting some info from my projects.

I am currently using encrypted json to store my settings/db/media etc (initial copy from Asset in Android and from Bundle Resources in IOS - Can also use embedded Resources for both Android/IOS) using plain file IO

This is not supported by IsolatedStorage, by design, as IsolatedStorage was intended to be used in "sandboxed" environments and allowing the sandboxed app access to the full path would be considered to be a vulnerability (e.g. it makes it easier to grab a path, throw in ..\..... components to bypass path validation, and open up the machine to the "sandboxed" app...).

If you need access to full path information -- which you do -- then don't use IsolatedStorage. Use System.IO and Environment.GetFolderPath(Environment.SpecialFolder.Personal).