# JavaScript로 인앱 메시지 생성하기

인앱 메시지는 사용자가 이미 앱과 상호작용하는 동안 앱 인터페이스 내에 직접 표시됩니다. 결과적으로 사용자는 푸시 알림, 이메일 또는 SMS보다 인앱 메시지를 덜 방해적인 것으로 인식합니다.

인앱 메시지에는 항상 리치 미디어(Rich Media)라고 불리는 이미지나 동영상이 포함됩니다. 인앱 메시지는 서식이 지정된 텍스트, 링크, CTA가 있는 버튼 및 기타 데이터를 포함할 수도 있어 매력적인 형태로 앱 사용자와 소통할 수 있습니다.

인앱 메시지는 HTML 기반이며 JavaScript를 지원합니다. Pushwoosh SDK는 다음 API를 제공하는 `pushwoosh` 변수를 주입합니다:

[`postEvent`](/ko/developer/api-reference/user-centric-api#postevent) 메서드를 사용하여 인앱 JavaScript 코드에서 직접 새로운 이벤트를 보낼 수 있습니다.

```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` 메서드를 사용하여 인앱에서 기기에 대한 태그를 설정할 수 있습니다:

```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)
  }
)
```

JavaScript 코드에서 인앱을 닫으려면 `closeInApp()` 메서드를 호출합니다:

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

또는 버튼/링크에 대해 사용자 지정 스킴 URL `<a href="pushwoosh://close">`를 간단히 사용할 수 있습니다.

리치 미디어(Rich Media)가 포함된 푸시 알림을 보낼 때 다음 코드로 해당 푸시의 사용자 지정 데이터를 가져올 수 있습니다: `pushwoosh.getCustomData()`

### 사용자 지정 JavaScript 인터페이스

인앱 메시지 JavaScript 기능은 네이티브 Java/Objective-C/Swift 메서드를 JavaScript에 노출하여 무제한으로 확장할 수 있습니다. 이는 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)용 `addJavascriptInterface` 메서드를 통해 달성할 수 있습니다.