HybridWebView

Működés

XAML

<local:HybridWebView x:Name="WebView" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>

C#

// Betöltött weboldal címe

WebView.Uri = "https://miskolc.hu";

// Betöltött weboldalon belül történő események figyelése

WebView.RegisterAction(data => JavaScriptResponse(data));

JavaScript

invokeCSharpAction(data);

- A WebView-ban futó weboldal meghívja az invokeCSharpAction függvényt és egy string-et ad át.

- Ezen függvény meghívását a Xamarin alkalmazás érzékelni fogja és a Xamarin a RegisterAction-ban megadott függvényt meg fogja hívni ezen átadott string-el.

- Mivel (főleg Android esetén) mellékszálon fut ilyenkor az események a RegisterAction-ban megadott függvényben, így bizonyos Xamarin parancsokat a főágban kell lefuttatni, vagyis a MainThread.BeginInvokeOnMainThread által létrehozott blokkon belül.

Megjegyzés: Nekem valamiért a Windows alatt nem akart működni. De hibát sem ír ki.

Weboldal JavaScript függvényének futtatása Xamarin által

string response = await WebView.EvaluateJavaScriptAsync($"fuggveny({valt1},{valt2},{valt3});");

- A Xamarin változókat {valt} formában kell megadni, ehhez a parancsot megadó string előtt egy $ jelnek is ott kell lennie.

- Ha kell, akkor meg lehet várni a függvény értékét, vagyis itt az await működik.

hivatkozás: 
Windows dokumentáció + Mintapélda
csoportleírás: 
A mintapélda csak lokális (alkalmazáson belül lévő) weboldalakra lett írva, de az általam mellékelt fájlok esetén ezen rész át lett írva, hogy a nem lokális weboldalak esetén működjenek.
Mobilos kategóriák: