# สร้าง In-App ด้วย JavaScript

ข้อความ In-App จะแสดงโดยตรงภายในอินเทอร์เฟซของแอปในขณะที่ผู้ใช้กำลังใช้งานแอปอยู่ ด้วยเหตุนี้ผู้ใช้จึงรู้สึกว่า In-App รบกวนน้อยกว่าการแจ้งเตือนแบบพุช อีเมล หรือ SMS

ข้อความ In-App มักจะมีรูปภาพหรือวิดีโอที่เรียกว่า Rich Media เสมอ In-App ยังสามารถรวมข้อความที่จัดรูปแบบ ลิงก์ ปุ่มที่มี CTA และข้อมูลอื่นๆ ซึ่งช่วยให้คุณสามารถสื่อสารกับผู้ใช้แอปของคุณในรูปแบบที่น่าสนใจได้

In-App เป็นแบบ HTML-based และรองรับ JavaScript Pushwoosh SDK จะแทรกตัวแปร `pushwoosh` ซึ่งมี API ดังต่อไปนี้:

คุณสามารถใช้เมธอด [`postEvent`](/th/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` เพื่อตั้งค่า tag สำหรับอุปกรณ์จาก In-App ได้:

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

หากต้องการรับ tag ของอุปกรณ์ ให้ใช้เมธอด `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 แบบ custom scheme สำหรับปุ่ม/ลิงก์ `<a href="pushwoosh://close">`

เมื่อส่งการแจ้งเตือนแบบพุชพร้อม Rich Media คุณสามารถรับข้อมูล custom data ของพุชนั้นได้ด้วยโค้ดต่อไปนี้: `pushwoosh.getCustomData()`

### อินเทอร์เฟซ JavaScript แบบกำหนดเอง

ฟังก์ชันการทำงานของ JavaScript ใน In-App Messages สามารถขยายได้อย่างไม่จำกัดโดยการเปิดเผยเมธอดของ 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)