Compartilhar via


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();