Práce s výchozími nastaveními uživatelů v Xamarin.iOS

Tento článek popisuje práci s NSUserDefault k uložení výchozího nastavení v aplikaci nebo rozšíření Xamarin.iOS.

Třída NSUserDefaults poskytuje způsob, jak aplikace a rozšíření pro iOS programově pracovat se systémem defaults System. Pomocí výchozího systému může uživatel nakonfigurovat chování nebo styl aplikace tak, aby splňoval své předvolby (na základě návrhu aplikace). Pokud chcete například prezentovat data v metrice nebo imperial měření nebo vybrat daný motiv uživatelského rozhraní.

Při použití se skupinami NSUserDefaults aplikací poskytuje také způsob komunikace mezi aplikacemi (nebo rozšířeními) v dané skupině.

O výchozích nastaveních uživatele

Jak je uvedeno výše, můžete do aplikace (NSUserDefaultsnebo rozšíření) přidat výchozí hodnoty uživatele a použít je k poskytnutí konfigurovatelných možností, které může koncový uživatel upravit, aby upravil vzhled nebo operaci aplikace za běhu.

Při prvním spuštění NSUserDefaults aplikace přečte klíče a hodnoty z výchozí databáze uživatele aplikace a uloží je do mezipaměti, aby se zabránilo otevření a čtení databáze pokaždé, když je potřeba zadat hodnotu.

Důležité

Apple už nedoporučuje, aby vývojář volal metodu Synchronize pro synchronizaci mezipaměti v paměti s databází přímo. Místo toho se bude automaticky volat v pravidelných intervalech, aby se mezipaměť v paměti synchronizovala s výchozí databází uživatele.

Třída NSUserDefaults obsahuje několik metod usnadnění čtení a zápisu upřednostňovaných hodnot pro běžné datové typy, jako jsou například řetězec, celé číslo, float, logická hodnota a adresy URL. Jiné typy dat lze archivovat pomocí NSData, pak číst z nebo zapisovat do výchozí databáze uživatele. Další informace naleznete v části Předvolby a Nastavení Průvodce programováním společnosti Apple.

Přístup ke sdílené instanci NSUserDefaults

Instance výchozích hodnot sdíleného uživatele poskytuje přístup k výchozímu nastavení uživatele pro aktuálního uživatele zařízení. Pokud objekt Shared Defaults neexistuje, vytvoří se při prvním přístupu a inicializaci s následujícími informacemi:

  • Skládá NSArgumentDomain se z výchozích hodnot parsovaných z aktuální aplikace.
  • Doména identifikátoru sady prostředků aplikace.
  • Skládá NSGlobalDomain se z výchozích hodnot sdílených všemi aplikacemi.
  • Samostatná doména pro každý z upřednostňovaných jazyků uživatele.
  • Sada NSRegistrationDomain dočasných výchozích hodnot, které může aplikace upravit, aby se zajistilo, že hledání bude vždy úspěšné.

Pokud chcete získat přístup k výchozí instanci sdíleného uživatele, použijte následující kód:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;

Přístup k instanci NSUserDefaults skupiny aplikací

Jak je uvedeno výše, pomocí skupin NSUserDefaults aplikací lze použít ke komunikaci mezi aplikacemi (nebo rozšířeními) v dané skupině. Nejprve budete muset zajistit, aby skupina aplikací a požadovaná ID aplikací byly správně nakonfigurované v části Certifikáty, identifikátory a profily v iOSu Dev Center a byly nainstalovány ve vývojovém prostředí.

Dále musí mít vaše projekty aplikace nebo rozšíření jednu z platných ID aplikací, která je vytvořená výše, a Entitlements.plist soubor musí být součástí sady aplikací s povolenými a zadanými skupinami aplikací.

Když je to všechno na místě, můžete k výchozím nastavením uživatele sdílené skupiny aplikací přistupovat pomocí následujícího kódu:

// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);

Kde group.com.xamarin.todaysharing je skupina aplikací vytvořená v certifikátech, identifikátory a profily , ke kterým chcete získat přístup. Další informace najdete v dokumentaci k funkcím skupiny aplikací.

Čtení výchozích hodnot

Po přístupu k požadované výchozí databázi uživatele můžete číst hodnoty z výchozích hodnot pomocí párů klíč/hodnota a několika metod usnadnění na základě typu přečtených dat:

  • ArrayForKey – Vrátí matici NSObjects pro danou hodnotu klíče.
  • BoolForKey – Vrátí logickou hodnotu pro daný klíč.
  • DataForKey – Vrátí NSData objekt pro daný klíč.
  • DictionaryForKey - Vrátí NSDictionary pro daný klíč hodnotu.
  • DoubleForKey – Vrátí dvojitou hodnotu pro daný klíč.
  • FloatForKey – Vrátí hodnotu float pro daný klíč.
  • IntForKey – Vrátí celočíselnou hodnotu pro daný klíč.
  • StringArrayForKey – Vrátí pole String objektů z dané hodnoty klíče.
  • StringForKey – Vrátí hodnotu řetězce pro daný klíč.
  • URLForKey – Vrátí NSUrl hodnotu pro daný klíč.

Například následující kód by načetl logickou hodnotu z výchozích hodnot uživatele:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Get value
var useHeader = plist.BoolForKey("UseHeader");

Zápis výchozích hodnot

Stejně jako při čtení výše uvedených hodnot můžete po přístupu k požadované výchozí databázi uživatele zapsat hodnoty do výchozích hodnot pomocí párů klíč/hodnota a několika metod usnadnění na základě typu zapisovaných dat:

  • SetBool - Zapíše danou logickou hodnotu do daného klíče.
  • SetDouble - Zapíše danou dvojitou hodnotu do daného klíče.
  • SetFloat - Zapíše danou hodnotu float do daného klíče.
  • SetString – Zapíše danou řetězcovou hodnotu do daného klíče.
  • SetURL - Zapíše danou adresu URL (NSUrl) hodnotu do daného klíče.

Například následující kód zapíše logickou hodnotu do výchozích hodnot uživatele:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Save value
plist.SetBool(useHeader, "UseHeader");
...

Důležité

Když se vaše aplikace poprvé spustí, NSUserDefaults přečte klíče a hodnoty z výchozí databáze uživatele aplikace a uloží je do mezipaměti, aby se zabránilo otevření a čtení databáze pokaždé, když se vyžaduje hodnota.

Shrnutí

Tento článek se zabývá NSUserDefaults třídou a jejím použitím k poskytnutí sady možností, které může koncový uživatel použít ke konfiguraci aplikace Xamarin.iOS. Kromě toho se zabývala používáním skupin aplikací ke komunikaci mezi rozšířením a nadřazenou aplikací nebo mezi aplikacemi ve skupině.