Sdílet prostřednictvím


Shrnutí kapitoly 9. Volání rozhraní API pro konkrétní platformu

Poznámka:

Tato kniha byla publikována na jaře roku 2016 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé a některá témata už nejsou zcela správná nebo úplná.

Někdy je nutné spustit kód, který se liší podle platformy. Tato kapitola zkoumá techniky.

Předběžné zpracování v projektu sdíleného assetu

Projekt Xamarin.Forms sdíleného assetu může pro každou platformu spouštět jiný kód pomocí direktiv #ifpreprocesoru jazyka C# , #elifa endif. To je znázorněno v PlatInfoSap1:

Trojitý snímek obrazovky s odstavcem formátovaným proměnným

Výsledný kód ale může být ošklivý a obtížně čitelný.

Paralelní třídy v projektu sdíleného assetu

Strukturovanější přístup k provádění kódu specifického pro platformu v SAP je ukázaný v ukázce PlatInfoSap2. Každý z projektů platformy obsahuje identicky pojmenovanou třídu a metody, ale implementované pro danou konkrétní platformu. SAP pak jednoduše vytvoří instanci třídy a zavolá metodu.

DependencyService a přenosná knihovna tříd

Poznámka:

Přenosné knihovny tříd byly nahrazeny knihovnami .NET Standard. Veškerý vzorový kód z knihy byl převeden na použití standardních knihoven .NET.

Knihovna nemůže normálně přistupovat ke třídám v projektech aplikací. Zdá se, že toto omezení brání tomu, aby se technika zobrazená v platInfoSap2 používala v knihovně. Obsahuje však třídu s názvemDependencyService, Xamarin.Forms která používá reflexi .NET pro přístup k veřejným třídám v projektu aplikace z knihovny.

Knihovna musí definovat interface členy, které musí používat v každé platformě. Každá z platforem pak obsahuje implementaci tohoto rozhraní. Třída, která implementuje rozhraní, musí být identifikována pomocí DependencyAttribute na úrovni sestavení.

Knihovna pak použije obecnou Get metodu DependencyService k získání instance třídy platformy, která implementuje rozhraní.

To je demonstrováno v ukázce DisplayPlatformInfo .

Generování zvuku specifické pro platformu

Ukázka MonkeyTapWithSound přidává pípnutí do programu MonkeyTap tím, že v každé platformě přistupuje k zařízením pro generování zvuku.