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}'targetyalnızca start'ta:include_external_ids,include_subscription_ids,included_segmentsveyaall. Yalnızca bu tür için push-to-start belirteci olan iOS cihazları hedeflenir.activity_idverilmezselac_…ü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.queuedwebhook'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:
| Alan | Değ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
| Belirti | Neden |
|---|---|
Start 422 HS_NO_RECIPIENTS | Hedefte 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_RECIPIENTS | Etkinlik cihazda bitmiş ya da SDK güncelleme belirtecini henüz bildirmemiş. |
| Cihazda hiçbir şey olmuyor | Tü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. |
iOS critical alert, interruption level ve ses
Bu rehber Pushizo'nun iOS bildirimlerinde desteklediği aps alanlarını, ios_interruption_level (time-sensitive / critical) kullanımını ve ses/hacim davranışını açıklar. Critical alert, Apple'ın yalnızca başvuruyla…
Huawei cihazlara bildirim (HMS Push Kit)
Google Play Hizmetleri olmayan Huawei cihazlar Firebase (FCM) bildirimlerini alamaz. Pushizo bu cihazlara Huawei Push Kit üzerinden hms_push kanalıyla gönderir…