> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-es/desarrollar-para-movil/desarrollar/detect-platform.md).

# Detectar la plataforma

Usa la `isMobile()` función para adaptar tu UI, controles y jugabilidad específicamente para mobile. Esta es la forma recomendada de ofrecer una gran experiencia en todos los clients sin bifurcar por completo la lógica de tu escena.

## Funciones disponibles

```ts
import { getPlatform, isMobile, isDesktop, isWeb } from '@dcl/sdk/platform'
```

* **`getPlatform()`** — devuelve la plataforma actual como `'mobile' | 'desktop' | 'web' | null`. Devuelve `null` hasta que el Explorer haya reportado su plataforma de vuelta a la escena (esto ocurre poco después de que la escena comience).
* **`isMobile()`** — devuelve `true` si el jugador está en el client mobile.
* **`isDesktop()`** — devuelve `true` si el jugador está en el client desktop.
* **`isWeb()`** — devuelve `true` si el jugador está en el client web.

{% hint style="warning" %}
**📔 Nota**: Estas funciones leen un valor que se completa asíncronamente cuando la escena comienza, y nada garantiza que ya esté disponible para cuando `main()` se ejecute. Si las llamas demasiado pronto, aún podrían devolver `null` / `false`. Para ir a lo seguro, pospone cualquier configuración dependiente de la plataforma hasta que `getPlatform()` devuelva algo distinto de `null`, por ejemplo, comprobándolo dentro de un System:

```ts
import { engine } from '@dcl/sdk/ecs'
import { getPlatform } from '@dcl/sdk/platform'

function platformCheckSystem() {
  if (getPlatform() === null) return
  engine.removeSystem(platformCheckSystem)
  setupUI()
}

engine.addSystem(platformCheckSystem)
```

{% endhint %}

## Divide tu UI por plataforma

Un patrón común es configurar una UI diferente para los jugadores mobile y desktop:

```ts
import { isMobile, isDesktop } from '@dcl/sdk/platform'

function setupUI() {
  if (isMobile()) {
    // Botones más grandes, diseño más simple para touch
    createMobileUI()
  } else if (isDesktop()) {
    // Diseño más denso ajustado para teclado y mouse
    createDesktopUI()
  }
}
```

También puedes usar el mismo patrón para:

* Mostrar u ocultar instrucciones en pantalla adaptadas a cada método de input.
* Reemplazar elementos pequeños clicables por zonas táctiles más grandes en mobile.
* Deshabilitar bindings de input que no están fácilmente disponibles en mobile (ver [Input en mobile](/creator/content-creator-es/desarrollar-para-movil/desarrollar/input-on-mobile.md)).

## Comprobando el valor bruto de la plataforma

Si necesitas gestionar múltiples plataformas en un solo switch, usa `getPlatform()`:

```ts
import { getPlatform } from '@dcl/sdk/platform'

const platform = getPlatform()

switch (platform) {
  case 'mobile':
    // comportamiento específico de mobile
    break
  case 'desktop':
    // comportamiento específico de desktop
    break
  case 'web':
    // comportamiento específico de web
    break
  case null:
    // la plataforma aún no se conoce
    break
}
```

## Relacionado

* [Área segura de mobile](/creator/content-creator-es/desarrollar-para-movil/desarrollar/safe-area.md)
* [Buenas prácticas de UI para móvil](/creator/content-creator-es/desarrollar-para-movil/desarrollar/ui-best-practices.md)
* [UI en pantalla](/creator/content-creator-es/escenas-sdk7/ui-2d/onscreen-ui.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-es/desarrollar-para-movil/desarrollar/detect-platform.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
