# Criar in-apps com JavaScript

As mensagens in-app são exibidas diretamente na interface do aplicativo enquanto um usuário já está interagindo com ele. Como resultado, os usuários percebem os in-apps como menos intrusivos do que notificações push, e-mails ou SMS.

As mensagens in-app sempre contêm imagens ou vídeos chamados Rich Media. Os in-apps também podem incluir texto formatado, links, botões com CTAs e outros dados, permitindo que você se comunique com os usuários do seu aplicativo de formas envolventes.

Os In-Apps são baseados em HTML e suportam JavaScript. O SDK da Pushwoosh injeta a variável `pushwoosh` que fornece a seguinte API:

Você pode usar o método [`postEvent`](/pt/developer/api-reference/user-centric-api#postevent) para enviar um novo evento diretamente do código JavaScript do 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)
  }
)
```

Você também pode usar o método `sendTags` para definir tags para o dispositivo a partir de um in-app:

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

Para obter as tags do dispositivo, use o método `getTags` da seguinte forma:

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

Se você quiser fechar um in-app a partir do código JavaScript, chame o método `closeInApp()`:

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

Ou simplesmente use uma URL de esquema personalizado para o botão/link `<a href="pushwoosh://close">`

Ao enviar uma notificação push com Rich Media, você pode obter os dados personalizados dessa push com o seguinte código: `pushwoosh.getCustomData()`

### Interface JavaScript personalizada

A funcionalidade JavaScript das Mensagens In-App pode ser estendida ilimitadamente expondo métodos nativos Java/Objective-C/Swift para JavaScript. Isso pode ser alcançado com os métodos `addJavascriptInterface` do SDK da Pushwoosh para [iOS](https://github.com/Pushwoosh/pushwoosh-ios-sdk/blob/master/iOS_SDK/Pushwoosh/PushwooshCore/InAppMessages/PWInAppManager.h) e [Android](https://github.com/Pushwoosh/pushwoosh-android-sdk/blob/master/Sources/pushwoosh/src/main/java/com/pushwoosh/inapp/InAppManager.java).