Xamarin.Essentials 入門 - #2 ユーザー設定
はじめに
Xamarin.Essentials が提供する、ユーザー設定機能について記載します。この API を利用することで、プラットフォーム固有の API について知らなくても、ユーザー設定を保存・取得するためのコードを簡単に書くことができます。
使ってみよう
Xamarin.Essentials のユーザー設定機能は、Preferences
クラスで提供されており、以下のことができます。
- 保存
- 取得
- 削除
- 全削除
- 存在チェック
使い方は、キーと値のペアで設定値の保存、取得ができます。(Set, Get メソッド)
// 保存 Preferences.Set("key", "value"); Preferences.Set("key", "value", "preference_name"); // 取得 var foo = Preferences.Get("key", "value"); var bar = Preferences.Get("key", "value", "preference_name");
キー指定による値の削除、存在チェックができ、すべての設定値を削除することも可能です。
// 削除 Preferences.Remove("key"); Preferences.Remove("key", "preference_name"); // 全削除 Preferences.Clear(); Preferences.Clear("preference_name"); // 存在チェック bool exists = Preferences.ContainsKey("key"); bool exists = Preferences.ContainsKey("key", "preference_name");
メソッドの引数に、preference_name
が指定された場合は、その名前の設定値を保存するデータストアが作成されます。
読んでみよう
Preferences のコードを読んで、プロットフォーム固有の処理を見ていきます。
iOS
iOS ではユーザーの設定値を保存・取得するために、NSUserDefaults
が利用されていることがわかります。
設定名が指定されていないときは、NSUserDefaults
の StandardUserDefaults
が返されています。これは、ユーザ設定を保存するためのデフォルトのオブジェクトで、アプリで利用する設定データの既定の保存場所です。
一方で、設定名を指定したときには、new NSUserDefaults(sharedName, NSUserDefaultsType.SuiteName)
のように、共有名を指定して、ユーザー設定用のオブジェクトを生成しています。
値の取得・設定を行うときには、NSUserDefaults
のメソッドが利用可能です。
- 値の保存
SetXxx
(SetBool, SetDouble, SetFloat, SetString 等)
- 値の取得
XxxForKey
(DoubleForKey, FloatForKey, StringForKey, IntForKey 等)
ユーザー設定の iOS 向けのコードみると、実際にこれらのメソッドが利用されていることがわかります。
Android
Android では、Shared Preferences が利用されていることがわかります。
設定名が指定されていないときは、PreferenceManager.GetDefaultSharedPreferences(context)
で既定のデータストアを取得していることがわかります。
設定名が指定されているときには、context.GetSharedPreferences(sharedName, FileCreationMode.Private)
を利用して、指定した名前のデータストアを作成しています。
値の取得・保存を行うときには、ISharedPreferences
インタフェーズの以下のメソッドを利用しています。
- 値の取得
- GetXxx メソッドを利用している(GetBoolean, GetFloat, GetInt, GetLong, GetString)
- 値の保存
- ISharedPreferences.Edit() を呼び出して ISharedPreferencesEditor を取得
- ISharedPreferencesEditor の PutXxx メソッドを利用(PutBoolean, PutFloat, PutInt, PutLong, PutString 等)
- 最後に ISharedPreferencesEditor.Apply() メソッドを呼び出して変更を確定
Android 向けのコード の static void PlatformSet<T>(string key, T value, string sharedName)
, static T PlatformGet<T>(string key, T defaultValue, string sharedName)
メソッドの中の処理を見ると、Android での設定値の取得・保存方法が分かります。
UWP
UWP では、ApplicatinDataContainer が利用されています。
設定名なしのときは、ApplicationData.Current.LocalSettings
というローカルアプリデータストア内にある既定のコンテナを返します。
設定名が指定されたときには、localSettings.CreateContainer(sharedName, ApplicationDataCreateDisposition.Always)
を使って、名前をつきのコンテナを生成し、それを返してます。
値の取得・保存
- 値の保存
- ApplicationDataContainer の Values プロパティにキーを指定して保存
します。(
appDataContainer.Values[“Key_Name"] = “Value"
)
- ApplicationDataContainer の Values プロパティにキーを指定して保存
します。(
- 値の保存
- ApplicationDataContainer の Values プロパティにキーを指定して取得します (
var value = appDataContainer.Values[“Key_Name"]
)
まとめ
この記事では、Xamarin.Essentials のユーザ設定機能について紹介しました。 内部で利用されているプラットフォーム固有の API を紹介し、その使い方についても簡単に記載しました。