# iOS Live Activities API

> เอกสารของ Apple:
> 
> * [เกี่ยวกับ Live Activities](https://developer.apple.com/design/human-interface-guidelines/live-activities)
> * [การอัปเดตและสิ้นสุด Live Activities ด้วยการแจ้งเตือนแบบพุชของ ActivityKit](https://developer.apple.com/documentation/activitykit/updating-and-ending-your-live-activity-with-activitykit-push-notifications)



## startLiveActivity



`POST` `https://api.pushwoosh.com/json/1.3/startLiveActivity`

อนุญาตให้สร้าง iOS Live Activities

### Request body

| พารามิเตอร์     | ประเภท   | จำเป็น/ทางเลือก | คำอธิบาย                                                                 |
|---------------|--------|-------------------|-----------------------------------------------------------------------------|
| application   | String | จำเป็น           | [รหัสแอปพลิเคชัน Pushwoosh](/th/developer/api-reference/api-identifiers/#application-code)                                             |
| auth          | String | จำเป็น           | [โทเค็นการเข้าถึง API](/th/developer/api-reference/api-identifiers/#api-access-token) จาก Pushwoosh Control Panel                          |
| notifications | Array  | จำเป็น           | อาร์เรย์ JSON ของพารามิเตอร์ข้อความ ดูรายละเอียดในตาราง Notifications ด้านล่าง |

#### Notifications
พารามิเตอร์ที่ใช้ในอาร์เรย์ `notifications`:

| พารามิเตอร์        | ประเภท             | จำเป็น/ทางเลือก | คำอธิบาย                                                                 |
|------------------|------------------|-------------------|-----------------------------------------------------------------------------|
| content       | String | จำเป็น          | เนื้อหาสำรองสำหรับอุปกรณ์ที่ใช้ iOS เวอร์ชันต่ำกว่า 16.1 ที่ไม่รองรับ Live Activity สำหรับ iOS 16.1+ (ที่รองรับ Live Activity) เนื้อหาจะมาจากฟิลด์ `live_activity` |
| title         | String | ทางเลือก          | ชื่อเรื่องของข้อความแจ้งเตือน                                                                                                            |
| live_activity    | Object           | จำเป็น           | ข้อมูล Live Activity เพื่อสร้าง Live Activity ใน iOS                          |
| live_activity.content-state    | Object           | จำเป็น           | เนื้อหาสำหรับการแจ้งเตือน Live Activity                                 |
| live_activity.attributes-type  | String           | จำเป็น           | ประเภทของแอตทริบิวต์ที่ใช้ใน Live Activity                           |
| live_activity.attributes       | Object           | จำเป็น           | แอตทริบิวต์สำหรับ Live Activity                                           |
| live_activity_id | String           | จำเป็น           | ตัวระบุที่ไม่ซ้ำกันสำหรับ Live Activity ใช้เพื่อกำหนดเป้าหมายกิจกรรมนี้เมื่อเรียกใช้ `updateLiveActivity` ต้องไม่ซ้ำกันในแต่ละเซสชันของกิจกรรม |
| filter | String | ทางเลือก | ชื่อของฟิลเตอร์ Pushwoosh (เซกเมนต์) ดูที่ [ชื่อเซกเมนต์ / ฟิลเตอร์](/th/developer/api-reference/api-identifiers/#segment--filter-name) Live Activity จะเริ่มต้นบนอุปกรณ์ทั้งหมดที่ตรงกับฟิลเตอร์นี้ |
| devices | Array of Strings | ทางเลือก | รายการของ [โทเค็นอุปกรณ์](/th/developer/api-reference/api-identifiers/#push-token) Live Activity จะเริ่มต้นเฉพาะบนอุปกรณ์ที่ระบุเท่านั้น |



### ตัวอย่างคำขอ

<Tabs>
<TabItem label="พร้อมฟิลเตอร์">
```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "SECRET_API_TOKEN",
    "notifications": [
      {
        "content": "Your order is being prepared",
        "title": "Food Delivery",
        "live_activity": {
          "event": "start",
          "title": "Order status",
          "content-state": {
            "status": "Third",
            "estimatedTime": "37 min",
            "emoji": "👨‍🍳"
          },
          "attributes-type": "FoodDeliveryAttributes",
          "attributes": {}
        },
        "live_activity_id": "FIRST_LIVE_ACTIVITY",
        "filter": "FILTER_NAME_1"
      }
    ]
  }
}
```
</TabItem>
<TabItem label="พร้อมอุปกรณ์">
```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "SECRET_API_TOKEN",
    "notifications": [
      {
        "content": "Your order is being prepared",
        "title": "Food Delivery",
        "live_activity": {
          "event": "start",
          "title": "Order status",
          "content-state": {
            "status": "Third",
            "estimatedTime": "37 min",
            "emoji": "👨‍🍳"
          },
          "attributes-type": "FoodDeliveryAttributes",
          "attributes": {}
        },
        "live_activity_id": "SECOND_LIVE_ACTIVITY",
        "devices": ["first_third", "second_device"]
      }
    ]
  }
}
```
</TabItem>
</Tabs>

### ตัวอย่างการตอบกลับ

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "Messages": [
      "XXXXX-XXXXXXXX-XXXXXXXX"
    ]
  }
}
```
> **หมายเหตุ:**
> 
> อ่าน [บทความนี้](/th/developer/pushwoosh-sdk/ios-sdk/ios-live-activities) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการทำงานกับ Live Activities โดยใช้ Pushwoosh iOS SDK


## updateLiveActivity


`POST` `https://api.pushwoosh.com/json/1.3/updateLiveActivity`

อนุญาตให้อัปเดตและสิ้นสุด iOS Live Activities

### Request body

| พารามิเตอร์      | ประเภท   | จำเป็น/ทางเลือก | คำอธิบาย                                                            |
|----------------|--------|-------------------|------------------------------------------------------------------------|
| auth           | String | จำเป็น           | [โทเค็นการเข้าถึง API](/th/developer/api-reference/api-identifiers/#api-access-token) จาก Pushwoosh Control Panel                      |
| application    | String | จำเป็น           | [รหัสแอปพลิเคชัน Pushwoosh](/th/developer/api-reference/api-identifiers/#application-code)                                       |
| notifications  | Array  | จำเป็น           | อาร์เรย์ JSON ของพารามิเตอร์ข้อความ ดูรายละเอียดในตาราง Notifications ด้านล่าง |

#### Notifications

พารามิเตอร์ที่ใช้ในอาร์เรย์ `notifications`:

| พารามิเตอร์        | ประเภท    | จำเป็น/ทางเลือก | คำอธิบาย                                                                 |
|------------------|---------|-------------------|-----------------------------------------------------------------------------|
| live_activity    | Object  | จำเป็น           | ข้อมูล Live Activity เพื่ออัปเดต Live Activity ใน iOS                          |
| live_activity.event            | String  | จำเป็น           | ระบุประเภทของเหตุการณ์ ใช้ `"update"` เพื่ออัปเดต Live Activity หรือ `"end"` เพื่อปิด |
| live_activity.content-state    | Object  | จำเป็น           | อ็อบเจกต์ที่มีคู่คีย์-ค่าที่ใช้ในการส่งข้อมูลไปยัง Live Activity เพื่ออัปเดตเนื้อหา |
| live_activity.dismissal-date   | Integer | ทางเลือก           | เวลา (เป็นวินาที) ที่ Live Activity ควรจะสิ้นสุด                    |
| live_activity_id | String  | จำเป็น           | ตัวระบุที่ไม่ซ้ำกันของ Live Activity ที่จะอัปเดต ต้องตรงกับ `live_activity_id` ที่ใช้ใน **startLiveActivity** การอัปเดตจะถูกส่งไปยังอุปกรณ์ทั้งหมดที่กิจกรรมนี้ได้เริ่มต้นไว้                |
| live_activity.relevance-score  | Integer | ทางเลือก           | บอกระบบ iOS ว่า Live Activity ใดมีความสำคัญสูงกว่ากิจกรรมอื่น ๆ รับค่าตั้งแต่ 1 ถึงอนันต์ (แนะนำให้ใช้ค่าไม่เกิน 100) |
| live_activity.stale-date | Integer | ทางเลือก | เวลา (เป็นวินาที) ที่แสดงถึงวันที่ Live Activity กลายเป็นข้อมูลเก่าหรือไม่ทันสมัย|


### ตัวอย่างคำขอ

```json

{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "SECRET_API_TOKEN",
    "notifications": [
      {
        "live_activity": {
          "event": "update",
          "title": "Live Activity Update",
          "content-state": {
            "status": "second 66",
            "estimatedTime": "66 min",
            "emoji": "👨‍"
          },
          "relevance-score": 60
        },
        "live_activity_id": "FIRST_LIVE_ACTIVITY"
      }
    ]
  }
}
```

### ตัวอย่างการตอบกลับ

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "Messages": [
      "XXXXX-XXXXXXXX-XXXXXXXX"
    ]
  }
}
```

> [อ่านบทความนี้](/th/developer/pushwoosh-sdk/ios-sdk/ios-live-activities/) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการทำงานกับ Live Activities โดยใช้ Pushwoosh iOS SDK


## กิจกรรมหลายรายการต่ออุปกรณ์

คุณสามารถเริ่มต้น Live Activities หลายรายการบนอุปกรณ์เดียวกันได้โดยการเรียกใช้ `startLiveActivity` หลายครั้งด้วยค่า `live_activity_id` ที่แตกต่างกัน

ตัวอย่างเช่น หากคุณเริ่มต้นสองกิจกรรม: `FIRST_LIVE_ACTIVITY` ด้วย `filter: FILTER_NAME_1` และ `SECOND_LIVE_ACTIVITY` ด้วย `filter: FILTER_NAME_2` อุปกรณ์ที่ตรงกับทั้งสองฟิลเตอร์จะมีกิจกรรมทั้งสองทำงานพร้อมกัน

หากต้องการอัปเดตหนึ่งในนั้น ให้ส่ง `live_activity_id` ของกิจกรรมนั้นไปยัง `updateLiveActivity` การอัปเดตจะถูกส่งไปยังอุปกรณ์ทั้งหมดที่กิจกรรมนั้นถูกสร้างขึ้น กิจกรรมอื่นจะไม่ได้รับผลกระทบ

พารามิเตอร์ `relevance-score` จะควบคุมลำดับความสำคัญในการแสดงผลเมื่อมี Live Activities หลายรายการทำงานอยู่บนอุปกรณ์เดียวกัน หากพื้นที่หน้าจอมีจำกัดหรือกิจกรรมถูกจัดกลุ่ม กิจกรรมที่มีค่าสูงกว่าจะแสดงด้วยลำดับความสำคัญที่สูงกว่า