# Créer des in-apps avec JavaScript

Les messages in-app s'affichent directement dans l'interface de l'application pendant qu'un utilisateur interagit déjà avec celle-ci. Par conséquent, les utilisateurs perçoivent les in-apps comme moins intrusives que les notifications push, les e-mails ou les SMS.

Les messages in-app contiennent toujours des images ou des vidéos appelées Rich Media. Les in-apps peuvent également inclure du texte formaté, des liens, des boutons avec des CTA et d'autres données, vous permettant de communiquer avec les utilisateurs de votre application de manière engageante.

Les in-apps sont basées sur HTML et prennent en charge JavaScript. Le SDK Pushwoosh injecte la variable `pushwoosh` qui fournit l'API suivante :

Vous pouvez utiliser la méthode [`postEvent`](/fr/developer/api-reference/user-centric-api#postevent) pour envoyer un nouvel événement directement depuis le code JavaScript de l'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)
  }
)
```

Vous pouvez également utiliser la méthode `sendTags` pour définir des tags pour l'appareil depuis une in-app :

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

Pour obtenir les tags de l'appareil, utilisez la méthode `getTags` comme suit :

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

Si vous souhaitez fermer une in-app depuis le code JavaScript, appelez la méthode `closeInApp()` :

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

Ou utilisez simplement une URL de schéma personnalisé pour le bouton/lien `<a href="pushwoosh://close">`

Lors de l'envoi d'une notification push avec Rich Media, vous pouvez obtenir les données personnalisées de cette push avec le code suivant : `pushwoosh.getCustomData()`

### Interface JavaScript personnalisée

La fonctionnalité JavaScript des messages in-app peut être étendue de manière illimitée en exposant des méthodes natives Java/Objective-C/Swift à JavaScript. Cela peut être réalisé avec les méthodes `addJavascriptInterface` du SDK Pushwoosh pour [iOS](https://github.com/Pushwoosh/pushwoosh-ios-sdk/blob/master/iOS_SDK/Pushwoosh/PushwooshCore/InAppMessages/PWInAppManager.h) et [Android](https://github.com/Pushwoosh/pushwoosh-android-sdk/blob/master/Sources/pushwoosh/src/main/java/com/pushwoosh/inapp/InAppManager.java).