OSNotification sınıfı, OneSignal SDK’larında push bildirim payload’unu temsil eder. Uygulamanızda bildirimleri işlerken bildirim başlığına, gövdesine, özel veriye ve platforma özgü özelliklere erişmek için kullanın.
Push bildirim payload’ları 4096 bayt ile sınırlıdır. Kesmeyi önlemek için payload’ları 3500 bayt altında tutun. additionalData alanı 2048 bayt ile sınırlıdır.
Uygulamanızda OSNotification’a erişim
Tüm OneSignal SDK’ları, bir OSNotification nesnesi döndüren bir bildirim olay dinleyicisi sağlar:
Android alanları
| Property | Type | Description |
|---|
getBody() | String | Bildirimin gövde metni. |
getTitle() | String | Bildirimin başlığı. |
getLaunchURL() | String | Bildirime tıklandığında açılan URL. |
getNotificationId() | String | OneSignal bildirim UUID’si. |
getAdditionalData() | JSONObject | Dashboard veya REST API aracılığıyla ayarlanan özel anahtar-değer verisi. Maks 2048 bayt. |
getTemplateId() | String | Şablonlar kullanılarak gönderildiyse, şablon UUID’si. |
getAndroidNotificationId() | int | Android yerel bildirim ID’si. |
getLargeIcon() | String | Büyük simgenin URL’si veya kaynak adı. |
getSmallIcon() | String | Küçük simge kaynak adı. |
getSmallIconAccentColor() | String | ARGB formatında simge vurgu rengi. |
getSound() | String | Çalınan ses kaynak adı. |
getCollapseId() | String | Bildirim değiştirme için collapse anahtarı. |
getPriority() | int | Android önceliği (-2 ile 2 arası). |
getLedColor() | String | ARGB formatında LED rengi. |
getLockScreenVisibility() | int | Kilit ekranı görünürlüğü: 1 = public, 0 = private, -1 = secret. |
getFromProjectNumber() | String | Gönderen proje numarası. |
getGroupedNotifications() | List<OSNotification> | Bir özette dahil edilen bildirimler. |
getGroupKey() | String | Özetlerde kullanılan grup anahtarı. |
getGroupMessage() | String | Özet metni. |
getBackgroundImageLayout() | BackgroundImageLayout | Arka plan resmi düzeni ve metin renkleri için nesne. |
getActionButtons() | List<ActionButton> | Simge, metin ve ID içeren eylem düğmeleri. |
getRawPayload() | String | Payload’un tam ham JSON dizesi. |
iOS alanları
| Property | Type | Description |
|---|
body | NSString | Bildirimin gövde metni. |
title | NSString | Bildirimin başlığı. |
launchURL | NSString | Bildirime tıklandığında açılan URL. |
notificationId | NSString | OneSignal bildirim UUID’si. |
additionalData | Dictionary | Dashboard veya REST API aracılığıyla ayarlanan özel anahtar-değer data. Maks 2048 bayt. |
templateId | NSString | Şablonlar kullanılarak gönderildiyse, şablon UUID’si. |
subtitle | NSString | Alt başlık metni. |
category | NSString | iOS kategori tanımlayıcısı. |
threadId | NSString | Bildirimleri thread’lere gruplamak için kullanılır (iOS 10+). |
badge | NSInteger | Mutlak rozet değeri. |
badgeIncrement | NSInteger | Rozeti artırma miktarı. |
contentAvailable | BOOL | content-available=1 ise, arka plan fetch’i tetikler. |
mutableContent | BOOL | mutable-content=1 ise, bir Notification Service Extension tetikler. |
actionButtons | NSArray | iOS eylem düğmeleri. |
rawPayload | NSDictionary | Payload’un tam ham JSON’u. |
parseWithApns | Method | Ham APNS payload’unu bir OSNotification’a dönüştürür. Servis uzantılarında kullanın. |
OSNotificationAction (tıklama olayları)
Kullanıcının bildirimle etkileşimini açıklar.
| Property | Type | Description |
|---|
actionId | String | Tıklanan eylem düğmesinin ID’si. |
type | enum | Opened (varsayılan dokunma) veya ActionTaken (düğme dokunması). |
Özel OneSignal payload yapısı
Tüm OneSignal bildirimleri payload’da özel bir "custom" nesnesi içerir:
{
"custom": {
"i": "the-notification-id"
}
}
Bu anahtar, OneSignal SDK’larının bildirimi işlemesi için gereklidir. Eksikse, bildirimler tıklama olaylarını veya analitikleri tetiklemeyecektir. OneSignal kullanan cihazlara başka bir servisten de push gönderiyorsanız, yinelenen işlemeyi önlemek için bu anahtarı filtreleyebilirsiniz. Ayrıntılar için Push payload handling sayfasına bakın.
additionalData’yı APNS root’a taşı
iOS uygulamaları için, additionalData alanlarını custom sözlüğünün içine yerleştirmek yerine APNS payload’unun root’unda kullanılabilir hale getirebilirsiniz. Bu, özel bildirim işleyicilerinde erişimi kolaylaştırır.
1. API aracılığıyla etkinleştirin
Update an app API’yi kullanın ve şunu ayarlayın:
{
"additional_data_is_root_payload": true
}
2. data ile push gönderin
data alanları APNS root payload’unda görünür:
{
"aps": {
"alert": { "title": "Sale", "body": "20% off all items!" }
},
"promo_code": "SPRING20"
}
Artık custom sözlüğünü kontrol etmeden promo_code’a doğrudan erişebilirsiniz.
Geri yüklenen bildirimler (Android)
Android SDK, cihaz yeniden başlatıldıktan veya uygulama yeniden başlatıldıktan sonra bildirimleri geri yükler.
| Property | Type | Description |
|---|
restoring | boolean | Bildirim cihaz/uygulama yeniden başlatmasından sonra geri yüklendiyse true. |
Geri yüklenen bildirimleri atlamak için restoring bayrağını kontrol edin. Eski bildirimlerin tamamen geri yüklenmesini önlemek için, gönderirken kısa veya 0 TTL (time-to-live) ayarlayın.
- iOS Push (APNS): 64 karakter, yalnızca onaltılık (0-9, a-f).
deviceToken.map {String(format: "%02x", $0)}.joined()
- Android Push (FCM): Genellikle 163 karakter, alfanümerik; tire, iki nokta üst üste ve alt çizgi içerebilir.
SSS
Maksimum payload boyutu nedir?
Push bildirim payload’ları toplam 4096 bayt ile sınırlıdır. additionalData alanı 2048 bayt ile sınırlıdır. Kesmeyi önlemek için toplam payload’unuzu 3500 bayt altında tutun.
Ham payload’da OneSignal bildirimini nasıl tanımlayabilirim?
Tüm OneSignal bildirimleri, bildirim ID’sini içeren "i" anahtarına sahip bir "custom" nesnesi içerir. OneSignal bildirimlerini diğer sağlayıcılar tarafından gönderilenlerden ayırt etmek için bu anahtarı kontrol edin.
additionalData’ya APNS root payload’unda erişebilir miyim?
Evet. additionalData alanlarını custom sözlüğünün içi yerine APNS root’una yerleştirmek için Update an app API aracılığıyla additional_data_is_root_payload’u etkinleştirin. Ayrıntılar için additionalData’yı APNS root’a taşı bölümüne bakın.