Genel Bakış
Onaylanmış Teslimat, bir cihazın OneSignal aracılığıyla gönderilen bir push bildirimini gerçekten aldığını izler. Cihazdaki OneSignal SDK bir push aldığında, bildirim kimliğini ve cihazın Abonelik Kimliği’ni içeren bir onay olayını OneSignal’a geri gönderir. Bu, hangi aboneliklerin hangi bildirimleri aldığını tam olarak görmenizi sağlar. OneSignal Dashboard’unuzda Onaylanmış Teslimat, Mesaj Raporu’nda Onaylandı (veya Alındı) olarak görünür. Tüm teslimat ve etkileşim metrikleri için Metrik Sözlüğü’ne bakın.
Onaylanmış Teslimat, “Teslim Edildi”den farklıdır. Platform push hizmetleri (APNs, FCM, ADM, HMS), bir bildirimin servis tarafından kabul edilip edilmediğini raporlar — cihazın gerçekten alıp almadığını değil. Onaylanmış Teslimat, cihaz tarafındaki onaylama işlemidir.
Gereksinimler
- Yalnızca ücretli planlarda mevcuttur. Planları karşılaştırın.
- Web SDK Kurulumu ve/veya Mobil SDK Kurulumu’nu tamamlayın.
- Onaylanmış Teslimat yalnızca cihazda OneSignal SDK yüklüyse çalışır.
- Yalnızca API aracılığıyla oluşturulan abonelikler için desteklenmez.
Platforma özgü sınırlamalar
iOS- Hem Bildirim Hizmeti Uzantısı hem de App Group kurulumu gerektirir.
- APNs, çevrimdışıyken uygulama başına yalnızca bir mesaj tutar. Çevrimdışıyken birden fazla push gönderilirse, yalnızca en son teslim edilir.
- Yalnızca
dataHuawei mesaj türü için desteklenir. messagetürü için Huawei, alındı verilerini yalnızca kendi gösterge panelinde sağlar.
- Safari, Onaylanmış Teslimat’ı desteklemez.
Onaylanmış Teslimat Sorun Giderme
Push bildirimi hiç almıyorsanız önce Bildirimler görüntülenmiyor’a bakın.iOS
iOS’ta Onaylanmış Teslimat için iki şeyin birlikte çalışması gerekir:- Push geldiğinde OneSignal kodunu çalıştıran bir Bildirim Hizmeti Uzantısı (NSE)
- Veri alışverişi yapabilmeleri için ana uygulama hedefi ile NSE hedefi arasında paylaşılan bir App Group
NSE hedefinin mevcut olduğunu ve doğru koda sahip olduğunu doğrulayın
Xcode’da, proje hedefleriniz altında OneSignalNotificationServiceExtension hedefinin listelendiğini kontrol edin. Mevcut değilse, iOS SDK Kurulumu’nun 2. Adımı’nı izleyin.NSE’nin
NotificationService.swift (veya .m) dosyasını açın. didReceive(_:withContentHandler:) içinde OneSignalExtension.didReceiveNotificationExtensionRequest’i çağırması gerekir. Dosya hâlâ Apple’ın varsayılan şablon kodunu içeriyorsa, OneSignal NSE kodu ile değiştirin.NSE'nin OneSignalExtension paketine sahip olduğunu doğrulayın
NSE hedefi > General > Frameworks and Libraries (veya Build Phases > Link Binary With Libraries)‘i seçin.
OneSignalExtension’ın listelendiğini doğrulayın. Ana uygulama hedefi OneSignalFramework kullanır, ancak NSE hedefi OneSignalExtension kullanmalıdır — bunlar farklı paketlerdir.App Group'un her iki hedefte de doğru yapılandırıldığını doğrulayın
OneSignal SDK, ana uygulamanız ile NSE arasında veri paylaşmak için bir App Group kullanır. Bunu yapılandırmanın iki yolu vardır — kurulumunuza uyan birini seçin.
- Ana uygulama hedefiniz > Signing & Capabilities > App Groups’u seçin.
- App Group’u onaylayın.
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal ise — YOUR_MAIN_APP_BUNDLE_ID, ana uygulama hedefinizin General > Identity altında bulunan Bundle Identifier’ıdır — Varsayılan App Group sekmesini izleyin. Aksi takdirde Özel App Group sekmesini izleyin.- Varsayılan App Group - group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
- Özel App Group
- NSE hedefi > Signing & Capabilities > App Groups’u seçin.
- Aynı App Group’un listelendiğini onaylayın. Eksikse, + Capability > App Groups aracılığıyla ekleyin ve aynı grubu seçin.
- Doğru:
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal - Yanlış:
group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
Minimum dağıtım hedeflerinin eşleştiğini onaylayın
NSE hedefi > General > Minimum Deployments’ı seçin. Bu değer, ana uygulama hedefinizin minimum dağıtımıyla eşleşmelidir. Uyumsuzluk, NSE’nin belirli işletim sistemi sürümlerinde çalışmamasına neden olabilir.
"Copy only when installing" seçeneğinin işaretini kaldırın
Ana uygulama hedefiniz > Build Phases > Embed App Extensions’ı seçin. “Copy only when installing” işaretinin kaldırıldığından emin olun. İşaretliyse, NSE geliştirme build’lerine dahil edilmez, dolayısıyla test sırasında hiçbir zaman çalışmaz.
Info.plist'teki NSExtension değerlerini doğrulayın
NSE hedefi > Info sekmesini seçin ve NSE’niz Objective-C ile yazılmışsa,
NSExtension anahtarını genişletin. Şunları içerdiğini onaylayın:$(PRODUCT_MODULE_NAME).NotificationService yerine NotificationService kullanın.mutable-content'in ayarlandığını doğrulayın
OneSignal, push payload’ına otomatik olarak
mutable-content: 1 ayarlar; bu iOS’a NSE’yi çağırmasını söyler. REST API aracılığıyla push gönderiyorsanız, açıkça mutable_content: false ayarlamadığınızı doğrulayın. mutable-content olmadan iOS NSE’yi çalıştırmaz ve Onaylanmış Teslimat tetiklenemez.NSE'nin çalıştığını test edin
OneSignal çağrısından önce Kendinize bir test push gönderin. Bildirim gövdesi
didReceive içine geçici olarak bu satırı ekleyin:[Modified] ile başlıyorsa, NSE doğru çalışıyor demektir. Başlamıyorsa, yukarıdaki adımları tekrar gözden geçirin — NSE çağrılmıyor. Test ettikten sonra bu satırı kaldırın.Xcode Console günlükleriyle gelişmiş NSE hata ayıklaması için iOS Bildirim Hizmeti Uzantısı hata ayıklama’ya bakın.Android
- Bildirimler görüntülenmiyorsa: Mobil push sorun giderme’ye bakın.
- Bildirimler gösteriliyor ancak Onaylanmış Teslimat eksikse: özel bir Android Hizmet Uzantısı bunu engelliyor olabilir. Android Hizmet Uzantısı kılavuzu’na bakın.
Web
- Safari desteklenmez.
- Diğer tarayıcılar için v16 SDK’ya geçişin tamamlandığından emin olun:
- Doğru SDK başlatma:
- Doğru Service Worker referansı:
- Doğru SDK başlatma:
SSS
Neden Onaylanmış Teslimat sayılarım düşük veya eksik?
En yaygın nedenler kurulum sorunları (özellikle iOS), etkin olmayan cihazlar ve platform sınırlamalarıdır.- iOS yanlış yapılandırması: Bildirim Hizmeti Uzantısı veya App Group eksik ya da hatalı. Yukarıdaki iOS’ta Onaylanmış Teslimat sorun giderme’ye bakın.
- Etkin olmayan veya terk edilmiş cihazlar: Çevrimdışı olan veya artık kullanılmayan cihazlar push almaz veya Onaylanmış Teslimat olayları göndermez. Aşağıdaki Etkin olmayan cihazları nasıl yönetirim?‘e bakın.
- Platform sınırlamaları: Huawei
messagetürü ve Safari, Onaylanmış Teslimat’ı desteklemez. - Android zorla kapatma: Bazı cihaz üreticileri, uygulamayı kaydırarak kapatmayı zorla kapatma olarak değerlendirerek SDK olaylarını durdurur. Mobil push gösterilmiyor kılavuzu’na bakın.
Etkin olmayan cihazları nasıl yönetirim?
Çevrimdışı olan veya terk edilmiş cihazlar push bildirimleri almaz veya Onaylanmış Teslimat olayları göndermez. Bu, kullanıcılar cihazlarını değiştirdiğinde veya terk ettiğinde yaygındır. Etkin olmayan kullanıcıları yeniden etkileşime geçirmek için:- Teslimati onaylamayan kullanıcılara yeniden göndermek için Kitle Etkinliği’ni kullanın.
- Son Oturum’a dayalı Segmentler oluşturun (örn., 90+ gün etkin değil).
- Onları geri kazanmak için bir Yeniden Etkileşim Journey’i ile birleştirin.
- Ulaşılamayan cihazları temizlemek için düzenli olarak etkin olmayan kullanıcıları hedefleyin.
Neden Onaylandı gösteriyor ama cihazımda görünmüyor?
Onaylanmış Teslimat olayı, cihazın push payload’ını aldığı anlamına gelir. Nadir durumlarda bildirim görüntülenmeyebilir. Olası nedenler:- Kaçırılan bildirim: Bunu dışlamak için Test Aboneliklerini Bul ve ayarla aracılığıyla kendinize test push gönderin.
- iOS Odak Modu: “Rahatsız Etmeyin”, “Uyku” veya diğer Odak modları bildirimleri geciktirir veya gruplandırır. Gruplanmış bir bildirimi görmeden kapatmış olabilirsiniz.
- Görüntülemeyi engelleyen uygulama kodu:
- Ön plan yaşam döngüsü dinleyicisi veya Bildirim Hizmeti Uzantısı’ndaki
event.preventDefault()bildirimin görüntülenmesini durdurur. removeDeliveredNotifications(withIdentifiers:)veyaremoveAllDeliveredNotifications()çağrıları bildirimleri geldikten sonra kaldırır.
- Ön plan yaşam döngüsü dinleyicisi veya Bildirim Hizmeti Uzantısı’ndaki
- Push yük ayarları:
priority’nin yüksek olarak ayarlandığından emin olun. Push önceliği’ne bakın.collapse_id, aynı kimliği kullanarak eski push’ları yenileriyle değiştirir.
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