OneSignal’den gönderilen push bildirimlerinizdeki verilere OSNotification sınıfı aracılığıyla erişebilirsiniz
Android Notification Service Extension
Kullanıcıya gösterilmeden önce bildirimi işlemenize olanak tanır. Yaygın kullanım durumları şunlardır:- Bir bildirim göstererek veya göstermeden arka planda veri alın.
- Özel vurgu rengi, titreşim deseni veya mevcut diğer
NotificationCompatseçenekleri gibi istemci tarafı uygulama mantığına bağlı olarak belirli bildirim ayarlarını geçersiz kılın.
Adım 1: Servis uzantısı için bir sınıf oluşturun
INotificationServiceExtension’ı uygulayan bir sınıf oluşturun ve onNotificationReceived yöntemini uygulayın.
onNotificationReceived yöntemi parametresi, INotificationReceivedEvent türünde event’tir.
@Keep anotasyonu, ProGuard veya R8’in minifikasyon sırasında sınıfınızı yeniden adlandırmasını veya kaldırmasını önlemek için gereklidir.Adım 2: Bildirimi özelleştirin
Aşağıdaki örnekler, Notification Service Extension sınıfında uygulayabileceğiniz yaygın özelleştirmeleri göstermektedir.- Bildirimin görüntülenmesini önleme
- Özel alan ekleme
- Bildirim rengini ve simgesini değiştirme
Bildirimin görüntülenmesini engellemek için
event.preventDefault() kullanın. Daha sonra görüntülemek için event.getNotification().display() çağırabilir ya da sessizce atmak için hiç çağırmayabilirsiniz.Adım 3: Servis uzantısını AndroidManifest.xml’inize ekleyin
Sınıf adını ve değerini AndroidManifest.xml dosyasında application etiketi içinde meta-data olarak ekleyin. Herhangi bir “kullanılmayan” uyarısını yoksayın.
XML
com.onesignal.example.NotificationServiceExtension yerine sınıfınızın tam nitelikli adını yazın.
iOS Notification Service Extension
UNNotificationServiceExtension, push bildirimlerinin kullanıcıya gösterilmeden önce içeriğini değiştirmenize olanak tanır ve şunlar gibi diğer önemli özellikler için gereklidir:- Resimler ve Zengin Medya.
- Onaylanmış Teslimat
- Rozetler
- Eylem Düğmeleri
- Firebase Analytics ile Etkilenen Açılışlar
iOS push yükünü alma
didReceive(_:withContentHandler:) override’ı, bestAttemptContent’i görüntülenmeden önce OneSignal’e ileten OneSignalExtension.didReceiveNotificationExtensionRequest’i çağırır. Bu yöntem çağrılmadan önce bestAttemptContent’i okuyabilir veya değiştirebilirsiniz.
Bu örnekte, aşağıdaki verilerle bir bildirim gönderiyoruz:
JSON
data’ya OneSignalNotificationServiceExtension içinde userInfo’nun custom sözlüğündeki a anahtarı aracılığıyla erişin:
iOS Notification Service Extension’da sorun giderme
Bu kılavuz, iOS mobil uygulamalarında gösterilmeyen Resimler, Eylem Düğmeleri veya Onaylanmış Teslimatlarla ilgili sorunları gidermek içindir.Xcode Ayarlarınızı kontrol edin
General > Targets içinde ana uygulama hedefiniizin ve OneSignalNotificationServiceExtension hedefinin aynı ve doğru olduğundan emin olun:- Supported Destinations
- Minimum Deployment (iOS 14.5 veya üstü)

Xcode'da Örnek Ana Uygulama Hedefi

Xcode'da Örnek OneSignalNotificationServiceExtension Hedefi
NSExtension anahtarını genişletin. Şunları gördüğünüzden emin olun:
XML

Info sekmesinde Örnek NSExtension anahtarı
”Copy only when installing“‘i kapatın
Ana uygulama hedefi > Build Phases > Embed App Extensions’ı seçin. “Copy only when installing”in işaretlenmediğinden emin olun. Eğer işaretliyse işareti kaldırın:
Ana uygulama hedefi derleme aşaması ayarları
iOS Notification Service Extension’da hata ayıklama
Notification Service Extension’ın doğru şekilde kurulduğunu doğrulamak için şu adımları izleyin.1. OneSignalNotificationServiceExtension kodunu güncelleyin
NotificationService.m veya NotificationService.swift’i açın ve tüm dosya içeriğini aşağıdaki kodla değiştirin. Bu, uzantının çalışıp çalışmadığını doğrulamaya yardımcı olmak için günlükleme ekler.
YOUR_BUNDLE_ID’yi gerçek Bundle ID’nizle değiştirin.
Hata ayıklama günlük türlerinin Konsol’da Action > Include Debug Messages aracılığıyla etkinleştirilmesi gerekir.
2. Aktif Şemanızı değiştirin
Aktif ŞemanızıOneSignalNotificationServiceExtension’a ayarlayın.

Xcode aktif şema seçimi
3. Projeyi derleyin ve çalıştırın
Projeyi Xcode’da gerçek bir cihazda derleyin ve çalıştırın.4. Konsolu açın
Xcode’da Window > Devices and Simulators’ı seçin.
Xcode Devices and Simulators penceresi

Cihaz konsolu erişim düğmesi
5. Konsolu kontrol edin
Konsolda:- Action > Include Debug Messages’ı seçin
- CATEGORY olarak
OneSignalNotificationServiceExtensionaraması yapın - Start’ı seçin

Konsol hata ayıklama yapılandırması
contents özelliğini kullanın). Bu örnekte, yük şudur:
cURL

Konsol hata ayıklama çıktısı örneği
SSS
iOS’ta bildirim servis uzantım neden çalışmıyor? Uzantı yalnızca bildirim yükündemutable-content ayarlandığında çalışır. OneSignal, ekler veya eylem düğmeleri içeren bildirimler için bunu otomatik olarak ayarlar. Xcode ayarlarınızın sorun giderme bölümüyle eşleştiğini doğrulayın.
Android’de bir bildirimin görüntülenmesini engelleyebilir miyim?
Evet. Görüntülemeyi engellemek için event.preventDefault() çağırın. Daha sonra görüntülemek için event.getNotification().display() çağırın ya da sessizce atmak için hiç çağırmayın. Daha fazla bilgi için Yinelenen bildirimler sayfasına bakın.
Android’de @Keep anotasyonuna ihtiyacım var mı?
Evet. ProGuard veya R8’in minifikasyon sırasında INotificationServiceExtension’ı uygulayan sınıfınızı yeniden adlandırmasını veya kaldırmasını önler.
İlgili sayfalar
Mobile SDK Kurulumu
iOS ve Android için OneSignal SDK’yı yükleyin ve yapılandırın.
Resimler ve zengin medya
Push bildirimlerine resim, GIF ve video ekleyin.
Onaylanmış teslimat
Cihazlara onaylanmış bildirim teslimatını takip edin.
Yinelenen bildirimler
Tüm platformlarda yinelenen push bildirimlerini giderin.