# API для iOS Live Activities

> Документация Apple:
> 
> * [О Live Activities](https://developer.apple.com/design/human-interface-guidelines/live-activities)
> * [Обновление и завершение Live Activities с помощью push-уведомлений 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.

### Тело запроса

| Параметр      | Тип    | Обязательный/Необязательный | Описание                                                                    |
|---------------|--------|-----------------------------|-----------------------------------------------------------------------------|
| application   | String | Обязательный                | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code)                                             |
| auth          | String | Обязательный                | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh.                          |
| 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. См. [Название сегмента / фильтра](/ru/developer/api-reference/api-identifiers/#segment--filter-name). Live Activity будет запущена на всех устройствах, соответствующих этому фильтру. |
| devices | Array of Strings | Необязательный | Список [токенов устройств](/ru/developer/api-reference/api-identifiers/#push-token). Live Activity будет запущена только на указанных устройствах. |
| send_date | String | Необязательный | Планирует push-уведомление, которое запускает Live Activity, на определенную дату и время — работает с таргетингом как по `filter`, так и по `devices`. Используйте формат `YYYY-MM-DD HH:mm` или `now` для немедленного запуска (это также значение по умолчанию, если параметр опущен). Дата не должна быть более чем на 1 день в прошлом или на 30 дней в будущем, иначе запрос будет отклонен с ошибкой валидации. |
| timezone | String | Необязательный | Часовой пояс, используемый для интерпретации `send_date`. Если опущен, `send_date` интерпретируется в UTC. |

<Aside type="caution">
Удаленный запуск Live Activity через `startLiveActivity` требует **iOS 17.2+** на устройстве — более ранние версии не поддерживают API `pushToStartTokenUpdates`, на который опирается эта конечная точка. См. [Запуск Live Activity с помощью удаленного push-уведомления](/ru/developer/pushwoosh-sdk/ios-sdk/ios-live-activities/#start-live-activity-with-a-remote-push-notification).

При таргетинге на `filter` (сегмент) запланированное время отправки — это время, когда Pushwoosh начинает рассылку push-уведомлений, а не гарантированный момент доставки. Для больших аудиторий доставка на отдельные устройства может отставать от `send_date` на несколько минут, так как скорость отправки push-уведомлений для Live Activity не может быть настроена с помощью `send_rate`.
</Aside>

### Пример запроса

<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>
<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": "THIRD_LIVE_ACTIVITY",
        "filter": "FILTER_NAME_1",
        "send_date": "2026-06-16 16:00"
      }
    ]
  }
}
```
</TabItem>
</Tabs>

### Пример ответа

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "Messages": [
      "XXXXX-XXXXXXXX-XXXXXXXX"
    ]
  }
}
```
> **Примечание:**
> 
> Прочтите [эту статью](/ru/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

### Тело запроса

| Параметр       | Тип    | Обязательный/Необязательный | Описание                                                               |
|----------------|--------|-----------------------------|------------------------------------------------------------------------|
| auth           | String | Обязательный                | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh.                      |
| application    | String | Обязательный                | [Код приложения Pushwoosh](/ru/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"
    ]
  }
}
```

> [Прочтите эту статью](/ru/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. Если место на экране ограничено или активности сгруппированы, активность с более высоким значением отображается с более высоким приоритетом.