Control de flujo de sesión AR
Este documento presenta el control del flujo de sesión AR, incluyendo cómo crear, iniciar, detener y destruir una sesión AR.
Antes de comenzar
- Comprender conceptos y flujo de sesión AR
Creación
Utilice el appId de la biblioteca de localización en la nube de la configuración, la dirección del servidor serverAddress, apiKey y apiSecret del servicio en la nube para crear APIKeyAccessData.
Luego, utilice el APIKeyAccessData creado para crear MegaTrackerConfigs.
A continuación, utilice MegaTrackerConfigs y la licenseKey de la configuración para crear SessionConfigs.
Finalmente, utilice el método createSession(sessionConfigs) del componente EasyARMegaComponent montado en la escena xr-frame para crear la sesión.
createSession() {
// Obtener el componente mega en la escena
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// Configuración de autenticación del servicio en la nube MegaTracker
const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess
}
// Configuración de sesión
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// Crear instancia
session = megaComponent.createSession(sessionConfigs);
}
Este código demuestra cómo crear una instancia de sesión usando la configuración después de obtener
megaComponentde la escena.
Precaución
Restricción de instancia única: solo se permite una instancia de sesión en una escena. Antes de crear una nueva sesión, debe asegurarse de que la instancia anterior haya sido destruida llamando a closeSession(), de lo contrario la creación fallará.
Inicio
Generalmente, se utiliza el método start(options) de EasyARSession en la devolución de llamada de preparación del sistema AR de xr-frame para iniciar la sesión.
Advertencia
MegaTracker depende de los datos proporcionados por el rastreador AR de plano, y no puede funcionar antes de que el rastreador de plano se inicialice.
En WXML, registre el evento de preparación del sistema AR usando bind:ready="handleReady":
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
En la función de devolución de llamada handleReady del componente xr-frame, utilice el método start(options) de EasyARSession para iniciar la sesión.
handleReady: function(event) {
try {
// Iniciar sesión, con 5 reintentos predeterminados en caso de fallo
await session.start();
} catch (err) {
console.error(`La inicialización de la sesión EasyAR falló: ${err.message}`);
return;
}
}
Detención y destrucción
Utilice el método closeSession() del componente EasyARMegaComponent montado en la escena xr-frame para destruir la sesión.
Se recomienda llamarlo en el ciclo de vida detached del componente xr-frame para garantizar la destrucción al salir de la página (es decir, cuando la instancia del componente se elimina del árbol de nodos de la página).
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Cambio entre primer y segundo plano
Cuando la página pasa a segundo plano, utilice el método pause() de EasyARSession para pausar la sesión. Cuando la página vuelve al primer plano, utilice el método resume() de EasyARSession para reanudar la sesión.
/** Implementación en la página del mini programa*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** Funciones dentro del componente xr-frame*/
pauseSession(): void {
if (!session) { console.error("La sesión EasyAR no está lista"); return;}
session.pause();
},
resumeSession(): void {
if (!session) { console.error("La sesión EasyAR no está lista"); return;}
session.resume();
}
Este código expone dos funciones
pauseSession()yresumeSession()en el componente xr-frame.En la página del mini programa, se llama a
pauseSession()en onHide (cuando el mini programa pasa de primer a segundo plano) para pausar la sesión.Se llama a
resumeSession()en onShow (cuando el mini programa vuelve de segundo a primer plano) para reanudar la sesión.