Android’de Android Live Notifications adlı benzer bir özellik vardır.
Gereksinimler
- Yerel iOS (Swift/Objective-C) kullanıyorsanız iOS SDK kurulumu’nu takip edin.
- Bir sarmalayıcı SDK (React Native, Flutter, Unity, vb.) kullanıyorsanız Mobil SDK kurulumu’nu ve ardından Çapraz platform Live Activity SDK Kurulumu’nu takip edin.
- push-to-start desteği için OneSignal iOS SDK sürüm 5.2.0+ (sürüm notlarına bakın).
- tıklama takibi ve Onaylanmış Teslimat için OneSignal iOS SDK sürüm 5.2.15+
- iOS 16.1+ ve iPadOS 17+
- Bir .p8 APNs anahtarı kullanın. Apple, Live Activities ile p12 sertifikalarını desteklemiyor.
- Xcode 14 veya üzeri
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.
OneSignalWidget) ve Include Live Activity’nin seçili olduğundan emin olun. Ardından Finish’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.

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
- Package Manager
- Cocoapods
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çinyour-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.
OneSignalWidgetLiveActivity.swift dosyanıza kopyalayıp yapıştırın.
your-nameLiveActivity.swift
5. Ana hedef üyeliğine izin verin
your-nameLiveActivity.swift dosyasındaki Target Membership listesine ana uygulama hedefinizi ekleyin.
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 sonraAppDelegate’inizde OneSignal.LiveActivities.setup’ı çağırın.
OneSignalWidgetAttributes’ı Live Activity attributes struct’ınızın adıyla değiştirin.
AppDelegate
Bir Live Activity başlatma
Bir cihazda Live Activity başlatmak için 2 seçenek vardır:- Push-to-start
- Trigger-in-app
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

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:
- Derin bağlantı için bir URL geçirebilir veya yalnızca navigasyon olmadan tıklama izleme istiyorsanız
nilgeç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ılanactivity_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
- 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
- Apple, her Live Activity sunumunun desteklenmesini gerektirir.
- Derin bağlantılarınızı test edin.
- Apple’ın Live Activities ile Canlı Veri Görüntüleme kılavuzunu inceleyin.
- Bir Live Activity’de hassas bilgileri görüntülemekten kaçının.
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:
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 depriority: 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ı).
- Uygulamanızın
Info.plistdosyasınaNSSupportsLiveActivitiesFrequentUpdatesanahtarını BooleanYESolarak 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.
Ana uygulamadan Live Activity güncellemelerini okuyabilir miyim?
Evet. Hata ayıklama veya UI senkronizasyonu için güncellemeleri gözlemleyebilirsiniz: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 veyasupport@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.-
Sunucuya doğru biçimlendirilmiş bir istek gönderdiğinizden emin olmak için isteğinizdeki yol parametrelerini kontrol edin. Uygulama Kimliği,
OneSignal.Initializemetodunda 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. - 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şmelidiractivity_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_segmentsgibi bir hedefleme parametresi. Mevcut seçenekler.
Activity gönderildi, ancak alınmadı
- İ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.
-
API isteğinizde, ayarladığınız
prioritydüzeyini belirleyin. Bunu10(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.
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

