Preguntas frecuentes - SDK del cliente web
Módulo RewardShop
¿Cómo enumero los productos de la tienda de recompensas?
getAllProducts({ page, limit, rewardType, ... }) devuelve una lista paginada.
¿Cómo obtengo los detalles de un producto?
getProductById(id) devuelve un ProductType o null.
¿Cómo realiza un jugador un pedido?
Use playerPlaceRewardShopOrder(request) con destinatario, idioma, dirección de envío, artículo, cantidad, etc.
¿Pueden los jugadores suscribirse para alertas de “vuelta al stock”?
Sí—subscribeToProductAvailability(productId), y comprueba el estado con isPlayerSubscribedToProductAvailability(productId).
¿Cómo obtengo campos personalizados para el formulario de pedido?
getOrderFormCustomFields() devuelve los campos personalizados configurados por el administrador para renderizar en su UI.
¿Puedo paginar los pedidos de los jugadores?
Sí—getPlayerOrders({ page, limit, status, rewardType, sortBy }).
Módulo Rewards Processor
¿Cómo reclama un jugador recompensas agrupadas?
Llame a playerClaimRewardsByGroupId(groupId) para reclamar las recompensas de un grupo dado.
Módulo Catalog
¿Cómo enumero las categorías de juegos de casino?
getCasinoGameCategories() devuelve todas las categorías (almacenadas en caché con retroceso elegante de datos obsoletos si falla la API).
¿Cómo busco/pagino juegos?
getCasinoGames({ page, limit, idOrName, gameName, gameId, gameProvider, gameCategory }) devuelve un PaginationResponse<GameType[]>.
¿Cómo enumero los proveedores de juegos?
getCasinoGamesProviders() devuelve los proveedores disponibles (con caching).
Módulo Feature Flags
¿Cómo leo una bandera de función (feature flag)?
Use getFeatureFlagValue(key); devuelve el valor tipado o null si no se encuentra.
¿Existe una obtención masiva para todas las banderas?
getFeatureFlags() existe pero está obsoleto; prefiera getFeatureFlagValue.
¿Los valores de las banderas se almacenan en caché?
Sí—los valores se almacenan en IndexedDB durante ~30 minutos y se borran al llamar a closeSession().
CRM (Notificaciones)
¿Cómo registro a un jugador para Web Push?
Llame a Crm.playerRegisterWebPushSubscription(); el SDK comprueba soporte/permisos y devuelve un enum de estado.
¿Qué estados puede devolver el registro de Web Push?
SUCCESS, ALREADY_GRANTED, MISSING_SERVICE_WORKER, WEB_PUSH_NOT_SUPPORTED, WEB_PUSH_PERMISSION_DENIED, WEB_PUSH_PERMISSION_CANCELLED, ERROR.
¿Cómo decido cuándo mostrar el banner de permiso?
Use shouldShowNotificationRequestPermissionsBanner(days, override) para limitar la frecuencia de solicitudes (especialmente útil para Safari).
¿Necesito un service worker para Web Push?
Sí—aloje un service worker mínimo que importe el script de Gamanza desde su dominio CDN PEP.
¿Cómo me registro para notificaciones in-app de OneSignal?
Envíe un OneSignalInAppNotificationSubscription a playerOneSignalInAppPushNotificationsSubscription(...).
Eventos en Tiempo Real (RTM)
¿Cómo me suscribo a eventos en tiempo real (p. ej., subida de XP/subida de nivel)?
Events.subscribe(eventKey, callback, options) devuelve un ID de suscripción; las opciones incluyen once, timeout y filter.
¿Cómo me doy de baja?
Use Events.unsubscribe(id) para una suscripción o Events.unsubscribeFromEvent(eventKey) para eliminar todas las del mismo key.
¿Puedo ver estadísticas actuales de suscripción?
Sí—Events.getEventsStats() devuelve un objeto resumen.
Errores, Respuestas y Tipos
¿Cuál es el sobre estándar de éxito/error?
Muchos métodos devuelven SimpleResponse<T> con { ok, data, error? }; las listas usan PaginationResponse<T> con totales y paginación.
¿Cuál es la falencia más común en la inicialización?
Acceder a módulos antes de init()—prepárese para SDKNotInitializedException y asegúrese de que init() se resuelva antes de llamar a getInstance().
Rendimiento y Caché
¿El SDK almacena datos en caché?
Sí—algunos módulos (p. ej., Missions, Catalog, FeatureFlags) emplean caché y pueden devolver datos obsoletos cuando fallan las APIs, mejorando la resiliencia.
Versionado y Licenciamiento
¿Dónde puedo ver la versión actual y el registro de cambios?
Consulte la página del paquete en NPM; muestra la versión publicada y los metadatos.
¿Cuál es el modelo de licencia?
El SDK es propietario; el uso está regido por la Licencia Gamanza Engage SDK (vea las notas de licencia del paquete).
Preguntas Adicionales
¿Cómo cargan los Operadores el bundle v2 de widgets?
Los Operadores deben incluir el script v2 desde su CDN regional y luego llamar a GamanzaEngageClient.init(config, cb). Use getInstance(cb) más tarde para acceder de forma segura a GamificationWidgets.
¿Qué ocurre si los Operadores llaman a getInstance antes de que init termine?
El callback recibe null; los Operadores deberían implementar una solución alternativa para (re)llamar init o posponer el uso.
¿Cómo renderizan los Operadores widgets en rutas SPA que montan nodos DOM más tarde?
Los Operadores deben usar GamificationWidgets.reload() (o reloadOne(id)) después de que aparezcan nuevos nodos para que la librería escanee y adjunte los widgets.
¿Qué estructura DOM esperan los widgets?
Los widgets esperan elementos con la clase gamification_widget y un data-type como avatar, reward-shop, active-boosters, etc.
¿Cómo pueden los Operadores obtener los datos básicos del jugador actual, como la aceptación (opt-in), desde el SDK?
Los Operadores pueden usar GamificationWidgets.getPlayer(cb) (expuesto vía getInstance) y escuchar el evento GamanzaEngage_Client_Initialized para saber cuándo terminó la obtención inicial.
¿Cuál es el gancho de limpieza al cerrar sesión?
Los Operadores deben llamar a GamificationWidgets.destroyWidgets() para limpiar Redux, el almacenamiento local, las conexiones de socket y destruir la instancia.
¿Todavía se soporta la versión v1 del cliente?
No, v1 está obsoleto; los Operadores deben usar el bundle y las APIs v2.
¿Los widgets proporcionan actualizaciones en tiempo real?
Sí, la puerta de enlace frontend y los widgets aprovechan SocketIO para ofrecer progreso del jugador y actualizaciones de notificaciones una vez autenticado.
¿Pueden los Operadores localizar dinámicamente las etiquetas de los widgets?
Sí, los Operadores pueden volver a renderizar los widgets con reload(newLocale) o reloadOne(id, newLocale) después de actualizar la locale en el estado de su app.
60. ¿Cuál es el marcado mínimo para mostrar los active boosters?
<div class="gamification_widget" data-type="active-boosters"></div> (después de la inicialización).
Última actualización
¿Te fue útil?

