# Crear in-apps con JavaScript

Los mensajes in-app se muestran directamente en la interfaz de la aplicación mientras un usuario ya está interactuando con ella. Como resultado, los usuarios perciben los in-apps como menos intrusivos que las notificaciones push, los correos electrónicos o los SMS.

Los mensajes in-app siempre contienen imágenes o videos llamados Rich Media. Los in-apps también pueden incluir texto formateado, enlaces, botones con CTAs y otros datos, lo que le permite comunicarse con los usuarios de su aplicación de formas atractivas.

Los In-Apps se basan en HTML y son compatibles con JavaScript. El SDK de Pushwoosh inyecta la variable `pushwoosh` que proporciona la siguiente API:

Puede utilizar el método [`postEvent`](/es/developer/api-reference/user-centric-api#postevent) para enviar un nuevo evento directamente desde el código JavaScript del In-App.

```javascript
pushwoosh.postEvent(
  'eventName',
  {
    TestAttributeString: 'testString',
    TestAttributeInt: 42,
    TestAttributeList: [123, 456, 'someString'],
    TestAttributeBool: true,
    TestAttributeNull: null,
    TestAttributeDaysAgo: 7,
    TestAttributeDate: new Date()
  },
  function() {
    console.log('Post event success')
  },
  function(error) {
    console.log('Post event failed: ', error)
  }
)
```

También puede utilizar el método `sendTags` para establecer etiquetas para el dispositivo desde un in-app:

```javascript
pushwoosh.sendTags({
  IntTag: 42,
  BoolTag: true,
  StringTag: 'testString',
  ListTag: ['string1', 'string2']
})
```

Para obtener las etiquetas del dispositivo, utilice el método `getTags` de la siguiente manera:

```javascript
pushwoosh.getTags(
  function(tags) {
    console.log('tags: ' + JSON.stringify(tags))
  },
  function(error) {
    console.log('failed to get tags: ' + error)
  }
)
```

Si desea cerrar un in-app desde el código JavaScript, llame al método `closeInApp()`:

```
pushwoosh.closeInApp();
```

O simplemente utilice una URL de esquema personalizado para el botón/enlace `<a href="pushwoosh://close">`

Al enviar una notificación push con Rich Media, puede obtener los datos personalizados de esa push con el siguiente código: `pushwoosh.getCustomData()`

### Interfaz JavaScript personalizada

La funcionalidad JavaScript de los Mensajes In-App puede extenderse ilimitadamente exponiendo métodos nativos de Java/Objective-C/Swift a JavaScript. Esto se puede lograr con los métodos `addJavascriptInterface` del SDK de Pushwoosh para [iOS](https://github.com/Pushwoosh/pushwoosh-ios-sdk/blob/master/iOS_SDK/Pushwoosh/PushwooshCore/InAppMessages/PWInAppManager.h) y [Android](https://github.com/Pushwoosh/pushwoosh-android-sdk/blob/master/Sources/pushwoosh/src/main/java/com/pushwoosh/inapp/InAppManager.java).