# Создание In-App сообщений с помощью JavaScript

In-App сообщения отображаются непосредственно в интерфейсе приложения, когда пользователь уже взаимодействует с ним. В результате пользователи воспринимают In-App сообщения как менее навязчивые, чем пуш-уведомления, электронные письма или SMS.

In-App сообщения всегда содержат изображения или видео, называемые Rich Media. In-App сообщения также могут включать форматированный текст, ссылки, кнопки с призывами к действию (CTA) и другие данные, что позволяет вам общаться с пользователями вашего приложения в увлекательных формах.

In-App сообщения основаны на HTML и поддерживают JavaScript. Pushwoosh SDK внедряет переменную `pushwoosh`, которая предоставляет следующий API:

Вы можете использовать метод [`postEvent`](/ru/developer/api-reference/user-centric-api#postevent) для отправки нового события (Event) непосредственно из JavaScript-кода 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)
  }
)
```

Вы также можете использовать метод `sendTags` для установки тегов (Tags) для устройства из In-App сообщения:

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

Чтобы получить теги устройства, используйте метод `getTags` следующим образом:

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

Если вы хотите закрыть In-App сообщение из JavaScript-кода, вызовите метод `closeInApp()`:

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

Или просто используйте URL с пользовательской схемой для кнопки/ссылки `<a href="pushwoosh://close">`

При отправке пуш-уведомления с Rich Media вы можете получить пользовательские данные (custom data) этого пуша с помощью следующего кода: `pushwoosh.getCustomData()`

### Пользовательский интерфейс JavaScript

Функциональность JavaScript в In-App сообщениях может быть неограниченно расширена путем предоставления нативных методов Java/Objective-C/Swift для JavaScript. Этого можно достичь с помощью методов `addJavascriptInterface` из Pushwoosh SDK для [iOS](https://github.com/Pushwoosh/pushwoosh-ios-sdk/blob/master/iOS_SDK/Pushwoosh/PushwooshCore/InAppMessages/PWInAppManager.h) и [Android](https://github.com/Pushwoosh/pushwoosh-android-sdk/blob/master/Sources/pushwoosh/src/main/java/com/pushwoosh/inapp/InAppManager.java).