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).
- 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.
Xcode'da uygulamanız için yeni bir Widget Extension hedefi ekleyin.
OneSignalWidget) ve Include Live Activity’nin seçili olduğundan emin olun. Ardından Finish’e tıklayın.

Bir Live Activity için Widget Extension seçenekleri.

Bir Live Activity için Widget Extension seçenekleri.
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'ya Supports Live Activities anahtarını ekleyin ve değerini Boolean 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:
Widget Extension hedefinize 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.

Ana hedef üyeliğine izin verin
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
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:- 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

Kilit ekranında Live Activity
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.
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

Live Activity Güncellendi
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 Sonlandı
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
- Kullanıcının live activity’sine güncelleme alamadığı belirli durumlarda, biri başlatıldıktan sonra, uygulamayı açmak devam etmek için onları yenilemelidir
- Bunu hesaba katmak için, stale date’i gelecekte bir tarih ve saate, kullanıcıya ilk güncellemenizi göndereceğinizi bildiğiniz bir zamandan sonraya ayarlarsınız ve güncellemeyi almayanlar yedek mesajı görürler.
- Widget UI’ınızda yedek mesajı göstermek için bu “stale” durumunu dinleyebilirsiniz:
swift
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