Referência de API para o plug-in Realidade Misturada WebView (versão prévia)
Importante
O WebView2 continua disponível. No entanto, o suporte para WebView2 no HoloLens foi descontinuado (sem correções de bugs, atualizações de conteúdo ou suporte técnico) e, portanto, não podemos garantir que os aplicativos continuarão funcionando por um longo período de tempo.
O plug-in do Microsoft Mixed Reality WebView para Unity permite a integração da funcionalidade WebView2 em seu aplicativo HoloLens 2. Esse plug-in do WebView para Unity simplifica a integração da funcionalidade do WebView2 em seu aplicativo HoloLens 2 encapsulando o controle WebView2, manipulando automaticamente a renderização e direcionando automaticamente a entrada para o controle WebView2.
Esse plug-in também gerencia a interoperabilidade entre o Unity e o WebView2, permitindo a comunicação entre o JavaScript e o Unity por meio de mensagens e eventos.
Esse plug-in expõe um subconjunto da funcionalidade disponível por meio do CoreWebView2.
O WebView2 no HoloLens 2 e o plug-in WebView para Unity estão em versão prévia e estão sujeitos a alterações antes da disponibilidade geral. O WebView2 Preview está disponível no Insider Preview para Microsoft HoloLens. Para acessar essa versão prévia, você deve estar inscrito no Programa Windows Insider; consulte Começar a receber builds do Insider na versão prévia do Insider para Microsoft HoloLens.
O WebView2 e o plug-in WebView só têm suporte em dispositivos HoloLens 2 que executam a atualização do Windows 11. Para obter mais informações, consulte Atualizar o HoloLens 2.
Para obter informações sobre como começar a usar o plug-in WebView para Unity, consulte Introdução ao WebView2 em aplicativos HoloLens 2 Unity.
IWebView Interface
A interface principal do plug-in WebView para Unity.
public interface IWebView
{
event WebView_OnNavigated Navigated;
event WebView_OnCloseRequested WindowCloseRequested;
GameObject GameObject { get; }
Texture2D Texture { get; }
int Width { get; set; }
int Height { get; set; }
Uri Page { get; }
Task OnceCreated { get; }
void Resize(int width, int height);
void Load(Uri url);
void Dispose();
}
Delegados do IWebView
public delegate void WebView_OnNavigated(string path);
public delegate void WebView_OnCanGoForwardUpdated(bool value);
Eventos IWebView
Evento IWebView.Navigated
Evento disparado quando o evento CoreWebView2.SourceChanged é gerado pelo WebView.
Exemplo
webView.Navigated += OnNavigated;
private void OnNavigated(string uri)
{
UrlField.text = uri;
}
Evento IWebView.WindowCloseRequested
Evento disparado quando o evento CoreWebView2.WindowCloseRequested é gerado pelo WebView.
Exemplo
webView.WindowCloseRequested += OnWindowCloseRequested;
private void OnWindowCloseRequested()
{
Destroy(GameObject);
}
Propriedades do IWebView
Propriedade IWebView.GameObject
A entidade GameObject do Unity de nível superior que representa o plug-in WebView na cena. Somente leitura.
Propriedade IWebView.Texture
O objeto 2D do Unity Texture2D
para o qual o conteúdo do WebView é renderizado. Somente leitura
Propriedade IWebView.Width
A largura da textura WebView e do controle WebView. As dimensões renderizadas da IWebView
instância na cena do Unity são controladas pelo GameObject
.
Propriedade IWebView.Height
A altura da textura WebView e do controle WebView. As dimensões renderizadas da IWebView
instância na cena do Unity são controladas pelo GameObject
.
IWebView.Page Propriedade
O URI atualmente carregado ou sendo navegado pelo controle WebView. Somente leitura
Propriedade IWebView.OnceCreated
A tarefa é executada quando o controle WebView foi totalmente instanciado e pronto para uso. Somente leitura
Exemplo
webView.OnceCreated.ContinueWith((task) => {
// Finish setting up plugin.
webview.Navigated += OnNavigated;
webview.WindowCloseRequested += OnWindowCloseRequested;
Load(initialURL);
}, TaskScheduler.FromCurrentSynchronizationContext());
Métodos IWebView
Método IWebView.Resize
Altera o tamanho do controle WebView2 e o Texture
. Para obter detalhes, consulte a propriedade CoreWebView2Controller.Bounds subjacente.
As dimensões renderizadas da IWebView
instância na cena do Unity são controladas pelo GameObject
.
Exemplo
Resize(600, 400);
Método IWebView.Load
Navega até o URI especificado. Para obter detalhes, consulte o método CoreWebView2.Navigate subjacente.
Exemplo
Load(new Uri("https://www.microsoft.com"));
Método IWebView.Dispose
Limpa recursos como memória, identificadores e retornos de chamada relacionados a uma IWebView
instância.
Invoque esse método quando terminar com uma instância específica IWebView
para garantir que a memória interna seja liberada corretamente. Depois de Dispose
ser chamada, a IWebView
instância deve ser considerada inválida.
Exemplo
void OnDestroy()
{
webView.Dispose();
}
IWithMouseEvents Interface
Dá suporte à entrada de mouse e ponteiro para o plug-in WebView para Unity.
public interface IWithMouseEvents
{
void MouseEvent(WebViewMouseEventData mouseEvent);
}
Métodos IWithMouseEvents
Método IWithMouseEvents.MouseEvent
Propaga um WebViewMouseEventData
evento para o controle WebView. Dependendo da lógica interna, o evento resulta na chamada do método CoreWebView2Controller.SendMouseInput ou do método CoreWebView2Controller.SendPointerInput.
Exemplo
public void OnPointerDown(PointerEventData eventData)
{
IWithMouseEvents mouseEventsWebView = webView as IWithMouseEvents;
// Call hypothetical function which converts the event's x, y into the WebView2's coordinate space.
var hitCoord = ConvertToWebViewSpace(eventData.position.x, eventData.position.y);
WebViewMouseEventData mouseEvent = new WebViewMouseEventData
{
X = hitCoord.x,
Y = hitCoord.y,
Type = PointerEvent.PointerDown,
Button = PointerButton.Left,
TertiaryAxisDeviceType = WebViewMouseEventData.TertiaryAxisDevice.PointingDevice
};
mouseEventsWebView.MouseEvent(mouseEvent);
}
IWithPostMessage Interface
Interface para comunicação de interoperabilidade entre o código do Unity e o código WebView hospedado.
Para saber mais sobre a interoperabilidade no WebView2, consulte Interoperabilidade de código nativo e do lado da Web.
public interface IWithPostMessage : IWebView
{
event WebView_OnPostMessage MessageReceived;
void PostMessage(string message, bool isJSON = false);
}
Delegados IWithPostMessage
public delegate void WebView_OnPostMessage(string message);
Eventos IWithPostMessage
Método IWithPostMessage.MessageReceived
Disparado quando uma nova mensagem JavaScript é recebida do controle WebView. Para obter detalhes, consulte o evento CoreWebView2.WebMessageReceived subjacente.
Exemplo
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;
void OnMessageReceived(string message)
{
Debug.Log(message);
}
Métodos IWithPostMessage
Método IWithPostMessage.PostMessage
Envia uma mensagem JavaScript para o conteúdo hospedado no controle WebView. Dependendo do isJSON
parâmetro, isso resultará na chamada do método CoreWebView2.PostWebMessageAsString ou do método CoreWebView2.PostWebMessageAsJson.
var msg = new MyMessage("updateText", "Updated from Unity!");
(webView as IWithPostMessage).PostMessage(JsonUtility.ToJson(msg), true);
IWithBrowserHistory Interface
Lida com funcionalidades relacionadas ao histórico do navegador, como navegar para uma página anterior.
public interface IWithBrowserHistory : IWebView
{
event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;
event WebView_OnCanGoBackUpdated CanGoBackUpdated;
void GoBack();
void GoForward();
}
Delegados IWithBrowserHistory
public delegate void WebView_OnCanGoBackUpdated(bool value);
public delegate void WebView_OnCloseRequested();
Eventos IWithBrowserHistory
Evento IWithBrowserHistory.CanGoForwardUpdated
Acionado quando a navegação ocorre. O delegado de evento fornecerá um true
valor se a propriedade CoreWebView2.CanGoForward for true
.
Exemplo
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;
void OnCanGoBack(bool value)
{
BackButton.enabled = value;
}
Evento IWithBrowserHistory.CanGoBackUpdated
Acionado quando a navegação ocorre. O delegado de evento fornecerá um true
valor se a propriedade CoreWebView2.CanGoBack for true
.
Exemplo
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;
void OnCanGoForward(bool value)
{
ForwardButton.enabled = value;
}
Métodos IWithBrowserHistory
Método IWithBrowserHistory.GoBack
Navega para a página anterior. Para obter detalhes, consulte o método CoreWebView2.GoBack subjacente.
Exemplo
(webView as IWithBrowserHistory).GoBack();
Método IWithBrowserHistory.GoForward
Navega para a próxima página. Para obter detalhes, consulte o método CoreWebView2.GoForward subjacente.
Exemplo
(webView as IWithBrowserHistory).GoForward();