Ana içeriğe atla
Live Activities, iOS uygulamanızın gerçek zamanlı güncellemeleri doğrudan kilit ekranında ve Dynamic Island’da göstermesine olanak tanır. Teslimat takibi, spor skorları veya zamana duyarlı işlemsel güncellemeler için ideal olan bu özellik, kullanıcıları uygulamayı açmadan bilgilendirir.
Android’de Android Live Notifications adlı benzer bir özellik vardır.

Gereksinimler


Kurulum

Bu adımlar, Live Activities’i hızlı bir şekilde kurmanız için size yol gösterir. Daha fazla ayrıntı ve tasarım özelleştirmeleri için Apple’ın Live Activities Geliştirici belgelerine bakın.

1. Widget Extension ekleyin

Xcode’da File > New > Target… > Widget Extension’a gidin.
Seçin ve Next’e basın. Bir ad sağlayarak Widget Extension’ı yapılandırın (örnek: OneSignalWidget) ve Include Live Activity’nin seçili olduğundan emin olun. Ardından Finish’e tıklayın.
Şemayı etkinleştirmeniz istenirse Don’t Activate’e tıklayın.

2. Info.plist’i güncelleyin

Ana hedefinizin Info.plist dosyasında Supports Live Activities anahtarını Boolean olarak ekleyin ve YES olarak ayarlayın.
Programatik olarak ayarlarsanız, şöyle görünmelidir:
info.plist
Live Activities’i güncellerken, Apple’ın güncellemenin ne kadar acil olduğunu belirlemek için kullandığı bir “öncelik” ayarlama seçeneğiniz vardır. Apple’ın yüksek öncelik bayrağını çok sık kullanan istekleri kısıtlayacağı dahili eşikleri vardır.Live Activities kullanım durumlarınız daha sık yüksek öncelikli güncellemelere dayanıyorsa, Apple’ın Geliştirici Belgelerinde yönlendirildiği gibi Info.plist dosyanıza NSSupportsLiveActivitiesFrequentUpdates anahtarını Boolean türünde YES olarak ayarlanmış şekilde ekleyebilirsiniz. Live Activity push bütçesini aştığında kullanıcılara bir diyalog sunulacak ve Live Activity’nin devam etmesine izin verirlerse, sorunsuz bir kullanıcı deneyimi için bütçe otomatik olarak artırılacaktır.

3. SDK ekleyin

Bir sarmalayıcı SDK (örneğin Flutter) kullanıyorsanız ve SPM etkinse, bu adımı atlayabilirsiniz. OneSignal paketi zaten çözülmüş olup tüm hedefler için kullanılabilir.
Widget Extension hedefinizde, General > Frameworks, Libraries and Embedded Content altına OneSignalFramework’ü ekleyin:

4. Widget özniteliklerini ve UI’ı tanımlayın

Struct’ın özelliklerini tanımlamak ve widget UI’da değişiklik yapmak için your-nameLiveActivity.swift dosyasını (örnek: OneSignalWidgetLiveActivity.swift) açın.
  • your-nameAttributes, Live Activity’nizin statik içeriğini açıklar.
  • ContentState, Live Activity’nizin dinamik içeriğini açıklar.
Örneği takip ediyorsanız, aşağıdaki kodu OneSignalWidgetLiveActivity.swift dosyanıza kopyalayıp yapıştırın.
your-nameLiveActivity.swift

5. Ana hedef üyeliğine izin verin

Bu adım yalnızca özel öznitelikler (örneğin, OneSignalWidgetAttributes) kullanırken gereklidir. DefaultLiveActivityAttributes kullanıyorsanız, bu adımı atlayın — tür OneSignal SDK tarafından sağlanmaktadır ve ana uygulama hedefinizden zaten erişilebilir.
your-nameLiveActivity.swift dosyasındaki Target Membership listesine ana uygulama hedefinizi ekleyin. Bu, ana uygulama hedefinin kurulum çağrısında (Adım 6) özel öznitelik yapınıza başvurabilmesi için gereklidir. Xcode’da ekranın sağ tarafındaki Inspector panelini açın. Target Membership içinde + düğmesine tıklayın ve ContentView ve OneSignal başlatma kodunuzu içeren ana uygulama hedefinizi seçin.

6. AppDelegate’inize setup metodunu ekleyin

OneSignal SDK başlatmasından sonra AppDelegate’inizde OneSignal.LiveActivities.setup’ı çağırın. OneSignalWidgetAttributes’ı Live Activity attributes struct’ınızın adıyla değiştirin.
AppDelegate
Bu, ActivityKit async dizilerini kullanarak güncellemeleri yönetir ve raporlar.
Uygulamanızda aşağıdaki dizilerden herhangi birini doğrudan kullanıyorsanız, OneSignal Live Activity davranışına müdahale edebilir:
  • activityStateUpdates
  • pushTokenUpdates
  • pushToStartTokenUpdates
  • activityUpdates

Bir Live Activity başlatma

Bir cihazda Live Activity başlatmak için 2 seçenek vardır:
Bir Push To Start API isteği gönderin. Tüm adların ve kimliklerin widget yapılandırmanızla tam olarak eşleştiğinden emin olun (parametreler büyük/küçük harfe duyarlıdır). Herhangi bir şey eksikse veya yanlış eklenmişse, widget’ı başlatmaya çalışırken sorunlarla karşılaşabilirsiniz.İşte yukarıdaki örnek için çalışacak bir örnek istek.Değiştirin:
  • YOUR_APP_ID’yi OneSignal App ID’niz ile.
  • YOUR_APP_API_KEY’i OneSignal API anahtarınız ile.
  • OneSignalWidgetAttributes’ı Widget Attributes struct’ınızın adıyla.
    curl
Sağlanan örnek kodu takip ediyorsanız, cihazınızın kilit ekranında Live Activity’yi görmelisiniz.
Push-to-start ile bir Live Activity’yi başarıyla başlattınız!Kullanıcıların güncellemeleri almaya devam etmek için “Allow” seçmesi gerekecektir.

Live Activity tıklamalarını izleme

OneSignal’ın tıklama izlemeyi uygulayarak kullanıcıların Live Activities ve Dynamic Islands’a ne zaman dokunduklerini izleyin. Bu, etkileşimi ölçmenizi ve isteğe bağlı olarak kullanıcıları uygulamanızdaki belirli içeriklere derin bağlantıyla yönlendirmenizi sağlar.

Adım 1: Widget’ınıza tıklama izleme ekleme

Live Activity widget’ınızdaki tıklamaları izlemek istediğiniz herhangi bir UI bileşenine .onesignalWidgetURL() değiştiricisini ekleyin:
Önemli hususlar:
  • Derin bağlantı için bir URL geçirebilir veya yalnızca navigasyon olmadan tıklama izleme istiyorsanız nil geçirebilirsiniz
  • .onesignalWidgetURL() kullanıyorsanız görünüm hiyerarşisi Apple’ın .widgetURL() değiştiricisini içeremez
  • Her ikisindeki tıklamaları izlemek istiyorsanız değiştiriciyi hem ana Live Activity görünümüne hem de Dynamic Island’a uygulayın

Adım 2: Uygulamanızda URL’leri işleme

Tıklamaları izlemek ve kullanıcıları uygun şekilde yönlendirmek için uygulamanıza URL işleme ekleyin:
trackClickAndReturnOriginal() metodu, OneSignal ile tıklamayı otomatik olarak izler ve uygulamanızın işlemesi için widget’ta belirttiğiniz orijinal URL’yi döndürür.

Bir Live Activity’yi güncelleme

Aktif widget’ları güncellemek için Update Live Activity API’yi kullanın. Activity başlatılırken kullanılan activity_id ile eşleştirin. Bu örnek istek push-to-start widget’ını güncelleyecektir çünkü tanımladığımız push-to-start başlıklı activity_id’ye sahiptir. Click-to-start widget’ını güncellemek için, istek yolunu push-to-start yerine click-to-start kullanacak şekilde güncelleyin.
curl
Bir Live Activity’yi başarıyla güncellediniz!Bir Live Activity’yi güncelleme hakkında daha fazla bilgi için Update Live Activity API’ye bakın.

Bir Live Activity’yi sonlandırma

Aynı Update Live Activity API’yi kullanarak "event": "end" ayarlayarak bir Live Activity’yi sonlandırabiliriz.
curl
Bir Live Activity’nin sona erebileceği diğer yollar:
  • SDK’mızın exit() metodunu kullanın.
  • Kullanıcı Live Activity’yi manuel olarak kaydırarak kapatır.
  • Kullanıcı iOS Ayarlarında Live Activities için izni iptal eder.
Live Activity’yi başarıyla sonlandırdınız ve örneği tamamladınız!

En iyi uygulamalar ve öneriler

Tasarım değerlendirmeleri

  • Apple’ın Live Activities İnsan Arayüzü Yönergelerini takip edin.
    • Hızlı bir bakışta anlaşılması kolay olması için önemli bilgilere öncelik verin.
    • Uygulamanıza Dynamic Island’a dikkat çeken öğeler eklemeyin.
    • Kenar boşlukları kullanın ve öğeler arasında boşluk bırakın.
    • Arka plan için kalın bir renk kullanın. Hem Light hem de Dark mode için tasarlayın.

İşlevsellik

Yedek mesaj ayarlama

Bir Live Activity başlatıldıktan sonra kullanıcı bir güncelleme alamazsa, uygulamayı açmak aktiviteyi yenilemeli. İlk güncellemeyi göndermeyi beklediğiniz noktadan sonrası için stale date’i ileride bir zamana ayarlayın. Güncellemeyi almayan kullanıcılara bunun yerine yedek mesaj gösterilir. Widget UI’ınızda yedek mesajı göstermek için “stale” durumunu dinleyebilirsiniz:
Yedek mesaj gösteren Live Activity widget'ı

SSS

Yüksek öncelikli güncellemeler için bütçe nedir?

Apple, yüksek öncelikli (priority: 10) güncellemeler için sabit bir sınır sağlamaz, ancak dinamik bir sistem düzeyinde bütçe uygularlar. Kısa bir süre içinde çok fazla yüksek öncelikli güncelleme göndermek, güncellemelerin geciktirildiği veya düşürüldüğü kısıtlamaya neden olabilir. Kısıtlama riskini azaltmak için:
  • Öncelik düzeylerinin karışımını kullanın: Apple, denge için hem priority: 5 (standart) hem de priority: 10 (yüksek) kullanılmasını önerir.
  • priority: 10’u yalnızca zamana duyarlı veya kritik güncellemeler için ayırın (örn. sipariş durumu değişiklikleri, oyun skorları).
Kullanım durumunuz sık güncellemeler gerektiriyorsa:
  • Uygulamanızın Info.plist dosyasına NSSupportsLiveActivitiesFrequentUpdates anahtarını Boolean YES olarak ayarlanmış şekilde ekleyin.
  • Bu bütçe aşıldığında, iOS kullanıcıdan ek güncellemelere izin vermesini isteyebilir. Kullanıcı kabul ederse, Apple sorunsuz bir deneyim sürdürmek için izin verilen güncelleme sınırını otomatik olarak genişletecektir.
Daha fazla ayrıntı için Apple’ın Geliştirici Belgelerine bakın.

Ana uygulamadan Live Activity güncellemelerini okuyabilir miyim?

Evet. Hata ayıklama veya UI senkronizasyonu için güncellemeleri gözlemleyebilirsiniz:
Yaşam döngüsü değişikliklerini izleyin:

API abone sınırını aştığımı belirten bir hata mesajıyla 400 döndürdü. Ne yapmalıyım?

Push abone sayınız planınız için Push Abonelerinden fazlaysa, lütfen hesabınızı bir sonraki plana yükseltin veya support@onesignal.com ile iletişime geçin. En son plan ayrıntıları için lütfen buraya bakın.

Hem push hem de Live Activities göndermeyi nasıl önlerim?

Uygulamanız zaten bir dizi Push Bildirimi gönderiyor olabilir ve tasarladığınız Live Activity bu Push Bildirimlerine olan ihtiyacı ortadan kaldırabilir. Örneğin, Push aracılığıyla skor güncellemeleri gönderiyorsanız, bunu bir Live Activity aracılığıyla değiştirebilirsiniz. Kullanıcılarınızın çok fazla mesaj almadığından emin olmak için, kullanıcınız bir Live Activity için katıldığında bir veri etiketi eklemenizi öneririz. Bu veri etiketini ekleyerek, aynı veya benzer içerik içerebilecek push mesajlarından bu veri etiketine sahip kullanıcıları hariç tutabilirsiniz. Veri Etiketleri ve Segmentler hakkında daha fazla bilgi edinin.

Sorun giderme

Alıcı yok

Bir Live Activity başlatmaya veya güncellemeye çalışırken kullanıcılarınızın bulunabilmesi için activity türü, widget ve cURL isteğinin hepsinin eşleşen değerlere sahip olduğundan emin olmalısınız.
  1. Sunucuya doğru biçimlendirilmiş bir istek gönderdiğinizden emin olmak için isteğinizdeki yol parametrelerini kontrol edin. Uygulama Kimliği, OneSignal.Initialize metodunda kullanılan Uygulama Kimliğiniz ile eşleşmeli ve activity türü, Live Activity dosyanızda tanımladığınız türle eşleşmelidir.
  2. Push To Start API isteğinin gövdesinde aşağıdaki parametrelere sahip olmalısınız:
  • event: "start"
  • event_updates: Activity türü altında struct’ınızda tanımladığınız ve widget’ınızda kullanılan dinamik veri. Harf büyüklüğü ve değişkenlerin istek, tür ve widget arasında eşleştiğinden emin olun.
  • event_attributes: Statik veri Event Updates ile aynı mantığı izler ve kullanımdaki tüm değişkenleri içermeli ve live activity’nin tüm kısımları ve istek arasında eşleşmelidir
  • activity_id: Bu, widget’a bir kimlik atayacaktır ve kullanıcının cihazında başlatıldıktan sonra activity’yi güncellemek için kullanılacak olan şeydir.
  • name: Live Activity Adı.
  • contents: Push göndermek için gereken mesaj içeriği.
  • headings: Push göndermek için gereken mesaj başlığı.
  • included_segments gibi bir hedefleme parametresi. Mevcut seçenekler.

Activity gönderildi, ancak alınmadı

  1. İsteğin doğru biçimlendirildiğinden emin olun. Widget’ta kullanılan herhangi bir alan atlanırsa, activity beklendiği gibi başlatılamayabilir veya güncellenemeyebilir.
  2. API isteğinizde, ayarladığınız priority düzeyini belirleyin. Bunu 10 (en yüksek öncelik) olarak ayarlıyorsanız, 5’e düşürmeyi deneyin ve tekrar test edin. Apple, kendi dahili hız limitleri uyarınca çok sık gönderilen istekleri kısıtlayacaktır.
Kullanım durumunuz daha sık güncellemelere dayanıyorsa, Apple’ın Geliştirici Belgelerinde yönlendirildiği gibi Info.plist dosyanıza NSSupportsLiveActivitiesFrequentUpdates anahtarını Boolean türünde YES olarak ayarlanmış şekilde ekleyin. Live Activity push bütçesini aştığında kullanıcıya bir diyalog sunulacak ve Live Activity’nin devam etmesine izin verirlerse, sorunsuz bir kullanıcı deneyimi için bütçe otomatik olarak artırılacaktır.
Need help?Chat with our Support team or email support@onesignal.comPlease include:
  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages
We’re happy to help!