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.