Pushizo Docs
Rehberler

iOS Live Activities

Live Activities, kilit ekranında ve Dynamic Island'da canlı içerik gösterir: sipariş takibi, teslimat süresi, maç skoru, yolculuk durumu. Pushizo ile etkinliği sunucudan başlatır, günceller ve bitirirsiniz…

Live Activities, kilit ekranında ve Dynamic Island'da canlı içerik gösterir: sipariş takibi, teslimat süresi, maç skoru, yolculuk durumu. Pushizo ile etkinliği sunucudan başlatır, günceller ve bitirirsiniz (docs/adr/0024-ios-live-activities.md).

Gereksinimler: iOS 16.1+ (uzaktan başlatma, yani push-to-start, iOS 17.2+), app'te iOS push kanalı (APNs .p8 anahtarı) ve Widget Extension içinde tanımlı bir ActivityAttributes tipi.

1. Türü tanımlayın

Mesajlar → Live Activities → Yeni tür veya API ile. Tür adı Swift tip adıyla birebir aynı olmalıdır.

struct DeliveryAttributes: ActivityAttributes, PushizoLiveActivityAttributes {
    struct ContentState: Codable, Hashable {
        var eta: Int
        var status: String
    }
    var orderId: String
    var pushizo: PushizoActivityData?
}
curl -X POST https://api.pushizo.com/v1/apps/$APP_ID/live-activities/types \
  -H "Authorization: Bearer $HS_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"DeliveryAttributes","content_state_schema":{"type":"object","properties":{"eta":{"type":"integer","minimum":0},"status":{"type":"string","enum":["hazirlaniyor","yolda","teslim"]}},"required":["eta","status"]},"attributes_schema":{"type":"object","properties":{"orderId":{"type":"string"}},"required":["orderId"]}}'

Şema dili düz nesne ve ilkel alanlardır (string, integer, number, boolean; isteğe bağlı enum, maxLength, minimum, maximum, required). Şemada olmayan alan, eksik zorunlu alan veya yanlış tür 422 HS_CONTENT_INVALID döner; cihaz bu içeriği çözemeyeceği için gönderilmez.

2. SDK'da kaydedin

if #available(iOS 16.1, *) {
    Pushizo.LiveActivities.register(DeliveryAttributes.self)
}

SDK, tür için push-to-start belirtecini ve başlayan her etkinliğin güncelleme belirtecini Pushizo'ya bildirir; etkinlik bitince belirteci siler. Info.plist'e NSSupportsLiveActivities = YES ekleyin. Ayrıntılar: iOS SDK. Flutter, React Native, Capacitor, Cordova, MAUI ve Unity köprüleri genel amaçlı PushizoDefaultLiveActivityAttributes türünü kullanır; bu durumda dashboard'da bu adla bir tür tanımlayın.

3. Başlatın, güncelleyin, bitirin

curl -X POST https://api.pushizo.com/v1/apps/$APP_ID/live-activities/DeliveryAttributes/start \
  -H "Authorization: Bearer $HS_API_KEY" -H "Content-Type: application/json" \
  -d '{"activity_id":"order-42","target":{"include_external_ids":["user-1"]},"attributes":{"orderId":"42"},"content_state":{"eta":25,"status":"hazirlaniyor"},"alert":{"title":{"tr":"Siparişin hazırlanıyor"}},"stale_date":1792090000}'
curl -X POST https://api.pushizo.com/v1/apps/$APP_ID/live-activities/DeliveryAttributes/update \
  -H "Authorization: Bearer $HS_API_KEY" -H "Content-Type: application/json" \
  -d '{"activity_id":"order-42","content_state":{"eta":10,"status":"yolda"}}'
curl -X POST https://api.pushizo.com/v1/apps/$APP_ID/live-activities/DeliveryAttributes/end \
  -H "Authorization: Bearer $HS_API_KEY" -H "Content-Type: application/json" \
  -d '{"activity_id":"order-42","content_state":{"eta":0,"status":"teslim"},"dismissal_date":1792093600}'
  • target yalnızca start'ta: include_external_ids, include_subscription_ids, included_segments veya all. Yalnızca bu tür için push-to-start belirteci olan iOS cihazları hedeflenir.
  • activity_id verilmezse lac_… üretilir ve yanıtta döner; update/end bu kimlikle yapılır.
  • Update/end, cihazların bu etkinlik için bildirdiği belirteçlere gider; hiç yoksa 422 HS_NO_RECIPIENTS (etkinlik bitmiş veya cihaz henüz bildirmemiş olabilir).
  • priority: 10 (varsayılan, hemen) veya 5 (enerji dostu; Apple bütçesine tabi).
  • Sessiz saat ve frekans sınırı uygulanmaz. Kota ve message.queued webhook'u normal mesajlar gibi çalışır; gönderim Mesajlar listesinde ve mesaj izlemede görünür.

Yanıt (202): { "message_id": "msg_…", "activity_id": "order-42", "event": "start", "recipients_estimate": 1 }.

4. Journey ile otomatik akış

Journey builder'da Live Activity adımı ekleyin: tür, olay (başlat/güncelle/bitir) ve etkinlik anahtarı. Aynı anahtarlı adımlar aynı run içinde aynı etkinliği hedefler (kimlik <run>-<anahtar>). Değerler Liquid içerebilir:

AlanDeğer
orderId (öznitelik){{ context.order_id }}
eta (içerik){{ user.tags.eta }}

Liquid çıktısı şemadaki türe çevrilir ("15" → 15). Kullanıcının belirteci yoksa adım atlanır ve run devam eder; değer şemaya uymazsa adım başarısız sayılır (run yine devam eder) ve journey analitiğinde görünür.

Sorun giderme

BelirtiNeden
Start 422 HS_NO_RECIPIENTSHedefte bu tür için push-to-start belirteci olan iOS 17.2+ cihaz yok; register çağrılmamış veya bildirim izni yok.
Update 422 HS_NO_RECIPIENTSEtkinlik cihazda bitmiş ya da SDK güncelleme belirtecini henüz bildirmemiş.
Cihazda hiçbir şey olmuyorTür adı Swift tip adıyla aynı değil veya ContentState alanları şemayla uyuşmuyor.
Teslimat failed (Unregistered)Belirteç geçersizleşti; Pushizo yalnızca bu belirteci siler, cihaz aboneliği etkilenmez.

Bu sayfada