# Outsystems

## การติดตั้งปลั๊กอิน Pushwoosh

เริ่มต้นด้วยการติดตั้งปลั๊กอิน Pushwoosh จาก [OutSystems Forge](https://www.outsystems.com/forge/component-overview/1556/pushwoosh-plugin) วิธีที่เร็วที่สุดคือไปที่แท็บ OutSystems ในสภาพแวดล้อมการพัฒนาของคุณและติดตั้งจากที่นั่น

### การกำหนดค่า Pushwoosh

คุณจะต้องกำหนดค่า Pushwoosh สำหรับแต่ละแพลตฟอร์มที่คุณจะรองรับ เมื่อการกำหนดค่าของคุณเสร็จสิ้น คุณจะได้รับ Application Code จาก Pushwoosh ซึ่งจะใช้กับปลั๊กอินของคุณ

#### สำหรับ iOS

เรียนรู้วิธี [กำหนดค่า Pushwoosh สำหรับ iOS](/th/developer/first-steps/connect-messaging-services/ios-configuration/ios-platform-configuration/)

#### สำหรับ Android

เรียนรู้วิธี [กำหนดค่า Pushwoosh สำหรับ Android](/th/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration/)

### การเพิ่มปลั๊กอิน Pushwoosh ไปยังแอปพลิเคชันของคุณ

1. ในแอปพลิเคชันของคุณ ใช้ "Manage Dependencies…" เพื่อเพิ่มการอ้างอิงไปยังปลั๊กอิน Pushwoosh

<img src="/outsystems.webp" alt="การเพิ่มการอ้างอิงปลั๊กอิน Pushwoosh"/>

2. เพิ่มบล็อก "PushwooshNotifications" ไปยัง:

   - บล็อก "Layout" หากแอปพลิเคชันของคุณไม่มีการล็อกอิน
   - บล็อก "LayoutBlank" หากแอปพลิเคชันของคุณมีการล็อกอิน

   เมื่อเพิ่มบล็อก "PushwooshNotifications" ให้หลีกเลี่ยงการเพิ่มเข้าไปใน placeholders เนื่องจากบางส่วนมีให้ใช้งานเฉพาะในเวลาออกแบบเท่านั้น และในขณะรันไทม์ Pushwoosh จะไม่ทำงาน

3. ตั้งค่าพารามิเตอร์ต่อไปนี้ใน PushwooshNotifications:

   - **PushwooshApplicationCode:** Pushwoosh Code ที่คุณได้รับหลังจากสร้างแอปพลิเคชันใน Pushwoosh
   - **FCMSenderId:** หมายเลขประจำตัวที่คุณได้รับขณะกำหนดค่า Android คุณสามารถเว้นว่างไว้ได้หากแอปพลิเคชันของคุณมีให้ใช้งานเฉพาะสำหรับ iOS
   - **NotificationReceivedEvent (Optional):** อีเวนต์ที่จะถูกเรียกเมื่อได้รับการแจ้งเตือนขณะที่แอปพลิเคชันอยู่ในสถานะเบื้องหน้า (foreground)
   - **NotificationOpenedEvent (Optional):** อีเวนต์ที่จะถูกเรียกเมื่อผู้ใช้คลิกการแจ้งเตือนบนอุปกรณ์ของตน

หากคุณใช้ปลั๊กอิน Pushwoosh ในแอป Android ของคุณ ให้ทำดังต่อไปนี้:

1. [รับไฟล์ `google-services.json`](https://support.google.com/firebase/answer/7015592) จาก Firebase ชื่อแพ็กเกจจากบริการของ Google ต้องตรงกับตัวระบุแอปของแอปพลิเคชัน OutSystems ที่กำลังสร้าง
2. สร้างไฟล์ zip ที่มี `google-services.json` อยู่ในรูท
3. อัปโหลดไฟล์ "google-services.zip" จากขั้นตอนก่อนหน้าไปยังแอปพลิเคชัน OutSystems ของคุณ และตรวจสอบให้แน่ใจว่า:
   - ตั้งค่า "Name" เป็น "google-services.zip"
   - ตั้งค่า "Deploy to Target Directory" เป็น "google-services"

<img src="/outsystems2.webp" alt="การอัปโหลดไฟล์ google-services.zip"/>

เพื่อให้เครื่องของคุณรับพุชโนติฟิเคชั่นได้ คุณจะต้องลงทะเบียนอุปกรณ์ก่อน หากผู้ใช้ของคุณต้องล็อกอินเพื่อใช้แอปพลิเคชัน ให้ไปที่หน้าจอ "Login" และแก้ไขการกระทำ "Login"

<img src="/outsystems3.webp" alt="แก้ไขการกระทำ Login"/>


เพิ่มโค้ดเพื่อลงทะเบียนอุปกรณ์หลังจากการกระทำ "DoLogin" ควรมีลักษณะดังนี้:

<img src="/outsystems4.webp" alt="การลงทะเบียนอุปกรณ์หลังจากการกระทำ DoLogin"/>

หากแอปพลิเคชันของคุณไม่มีการล็อกอิน คุณสามารถเพิ่มโค้ดนี้ไปยังอีเวนต์ `OnInitializeOver` ในบล็อก `PushwooshNotifications`

<img src="/outsystems5.webp" alt="อีเวนต์ OnInitializeOver"/>

ในตัวจัดการอีเวนต์นี้ ให้เรียกการกระทำ `RegisterDevice`

<img src="/outsystems6.webp" alt="เรียกการกระทำ RegisterDevice"/>

หากคุณกำลังสร้างแอปมือถือ iOS โดยใช้ใบรับรองสำหรับนักพัฒนา คุณจะต้องเพิ่มค่ากำหนด (preference) ไปยังคุณสมบัติ Extensibility Configurations ของโมดูล OutSystems ของคุณ:

```json
{
  "preferences": {
    "global": [
      {
        "name": "aps-environment",
        "value": "development"
      }
    ]
  }
}
```

<img src="/outsystems7.webp" alt="การกำหนดค่า Extensibility Configurations"/>

ค่ากำหนดนี้จะถูกเพิ่มไปยังไฟล์ entitlements ของคุณ (เรียนรู้เพิ่มเติมเกี่ยวกับ entitlements ใน [เอกสารสำหรับนักพัฒนาของ Apple](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html))

หากคุณกำลังสร้างแอปมือถือ iOS โดยใช้ใบรับรองสำหรับเวอร์ชันใช้งานจริง (production) คุณไม่จำเป็นต้องระบุค่ากำหนดใดๆ เนื่องจากค่าเริ่มต้นของค่ากำหนด `aps-environment` ใน OutSystems คือ `production`

ตอนนี้แอปพลิเคชันของคุณพร้อมที่จะรับพุชโนติฟิเคชั่นแล้ว [กำหนดค่าและสร้างแอปมือถือของคุณ](https://success.outsystems.com/documentation/10/delivering_mobile_apps/generate_and_distribute_your_mobile_app/) และติดตั้งลงบนอุปกรณ์ของคุณ ณ จุดนี้ คุณสามารถใช้อินเทอร์เฟซของ Pushwoosh เพื่อส่งการแจ้งเตือนไปยังแอปของคุณและตรวจสอบให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง โปรดทราบว่าคุณจะไม่เห็นการแจ้งเตือนหากแอปกำลังทำงานอยู่ แต่จะมีการเรียกอีเวนต์ `NotificationReceivedEvent` ขึ้นมาทันที

### การส่งการแจ้งเตือน

ในการส่งการแจ้งเตือน คุณต้องมี [API Access Token](/th/developer/api-reference/api-access-token/) ของ Pushwoosh สร้างโทเค็นโดยเข้าไปที่คอนโซลของ Pushwoosh ไปที่ "API Access" และคลิก "Generate new access token"

<img src="/outsystems8.webp" alt="สร้าง API Access Token ใหม่"/>

หากต้องการส่งการแจ้งเตือนไปยังอุปกรณ์ทั้งหมด ให้ใช้การกระทำ `SendPushNotificationToAll`

<img src="/outsystems9.webp" alt="การกระทำ SendPushNotificationToAll"/>

การกระทำนี้ใช้พารามิเตอร์ต่อไปนี้:

- **PushwooshApplicationCode:** Pushwoosh Code ที่คุณได้รับหลังจากสร้างแอปพลิเคชันใน Pushwoosh
- **ApiAccessToken:** Pushwoosh API Access Token ที่ได้รับก่อนหน้านี้
- **Message:** ข้อความที่คุณต้องการส่ง
- **Badge:** ตัวเลขที่แสดงบนไอคอนแอปพลิเคชัน iOS
- **Deeplink:** deep link ที่จะส่งไปพร้อมกับการแจ้งเตือน เรียนรู้ [วิธีสร้าง deep links](https://success.outsystems.com/documentation/how_to_guides/development/how_to_define_mobile_app_deep_links/)

ตัวอย่างเช่น หากคุณใช้การกระทำนี้เพื่อส่งข้อความ "Hello from OutSystems" ไปยังแอปพลิเคชันชื่อ "PushTest" ผลลัพธ์ที่แสดงใน iOS จะเป็นดังนี้:

<img src="/outsystems10.webp" alt="ตัวอย่างการแจ้งเตือนใน iOS"/>

### ข้อมูลเพิ่มเติม

- หากแอปของคุณกำลังทำงาน การแจ้งเตือนจะไม่แสดงบนอุปกรณ์ แต่จะถูกส่งไปยังแอปและมีการเรียกอีเวนต์ `NotificationReceivedEvent` ขึ้นมา คุณจะต้องกำหนดว่าต้องการให้แอปทำอะไรในสถานการณ์นั้น
- พุชโนติฟิเคชั่นอาจใช้เวลาสักครู่ในการเปิดใช้งาน หากคุณไม่เห็นการแจ้งเตือนเข้ามา ให้รอสักครู่ก่อนที่จะทำการแก้ไขปัญหาเพิ่มเติม

## แบ่งปันความคิดเห็นของคุณกับเรา

ความคิดเห็นของคุณช่วยให้เราสร้างประสบการณ์ที่ดีขึ้น เราจึงยินดีรับฟังหากคุณมีปัญหาใดๆ ในระหว่างขั้นตอนการติดตั้ง SDK หากคุณประสบปัญหาใดๆ โปรดอย่าลังเลที่จะแบ่งปันความคิดเห็นของคุณกับเรา [ผ่านแบบฟอร์มนี้](https://docs.google.com/forms/d/e/1FAIpQLSd_0b8jwn-V_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform)